문제 링크 : https://www.acmicpc.net/problem/1182


부분집합을 이용하는 문제입니다.


부분집합에 대한 이전 포스팅 https://bcp0109.tistory.com/17


원소를 일일히 기억할 필요가 없어서 코드가 훨씬 간단해집니다.


배열 인덱스의 처음부터 끝까지 진행하며


1) arr[idx] 값을 더한 경우

2) arr[idx] 값을 더하지 않은 경우


두 가지 경우로 나누어서 탐색합니다.


인덱스의 끝에 도달하면 지금까지 더한 값과 S 를 비교하여 일치할 경우 count++ 해주시면 됩니다.



** 주의사항 **


부분집합을 구하다보면 공집합이 생깁니다.


만약 S 가 0 이라면 공집합때문에 아무 값도 더하지 않아서 0 인 경우도 카운트 하게 됩니다.


이 부분에 대해서만 예외처리를 해주시면 됩니다.


파이썬에서는 조합에 대한 라이브러리를 제공해주기 때문에 그냥 n번만큼 조합을 돌렸습니다.


+ Recent posts