문제 링크 : https://www.acmicpc.net/problem/1182
부분집합을 이용하는 문제입니다.
부분집합에 대한 이전 포스팅 https://bcp0109.tistory.com/17
원소를 일일히 기억할 필요가 없어서 코드가 훨씬 간단해집니다.
배열 인덱스의 처음부터 끝까지 진행하며
1) arr[idx] 값을 더한 경우
2) arr[idx] 값을 더하지 않은 경우
두 가지 경우로 나누어서 탐색합니다.
인덱스의 끝에 도달하면 지금까지 더한 값과 S 를 비교하여 일치할 경우 count++ 해주시면 됩니다.
** 주의사항 **
부분집합을 구하다보면 공집합이 생깁니다.
만약 S 가 0 이라면 공집합때문에 아무 값도 더하지 않아서 0 인 경우도 카운트 하게 됩니다.
이 부분에 대해서만 예외처리를 해주시면 됩니다.
파이썬에서는 조합에 대한 라이브러리를 제공해주기 때문에 그냥 n번만큼 조합을 돌렸습니다.
'알고리즘 문제 > 백준' 카테고리의 다른 글
백준 1766번. 문제집 (Java) (0) | 2018.12.28 |
---|---|
백준 2252번. 줄 세우기 (Java) (0) | 2018.12.28 |
백준 2309번. 일곱 난쟁이 (Java) (0) | 2018.12.27 |
백준 10974번. 모든 순열 (Java) (0) | 2018.12.27 |
백준 2573번. 빙산 (Java) (2) | 2018.12.22 |