[백준 알고리즘 - 1208] 부분집합의 합 2 - java/재귀호출
크기가 n인 집합이 주어졌을 때, 그 부분집합의 갯수는 2^n이다. 이 문제에서 최대 N은 40이기 때문에 2^40=1.0995116e+12 어느정도인지는 모르겠고, 1초 안에 해결할 수 없는 크기인건 알겠다. 따라서 이 문제는 분할하여 풀어야한다. 2^20은 약 1000000으로 1초안에 계산할 수 있기 때문에 주어진 집합을 반으로 쪼개어서 각각 구한 후 풀이한다. 풀이과정은 다음과 같다. [ A, B, C, D, E, F ] 집합이 주어졌을 때, [ A, B C ] [ D, E, F ] 로 쪼갠다. 분할된 두 집합의 부분집합을 구한 후(공집합 포함) 두 분할을 활용하면 문제를 풀이할 수 있다. 여기서 공집합을 포함하는 이유는 앞의 부분집합의 공집합을 선택할지라도 뒤에서 공집합이 아닌 집합을 선택하면 ..
이론/문제풀이
2018. 9. 6.