부분집합의 합이 100이 되도록 하면 되는 문제이다.
재귀를 사용해 풀었고, 만족하는 조건을 한번만 출력하면 되기에 flag 변수를 사용했다.
만족하는 경우 이후 재귀에서 바로 return 하도록 만들어 함수를 끝냈다.
#### 부분집합의 합 -> 조합
def subset(idx ,cur_sum, start):
global flag
if flag == 1: return
if idx == 7:
if cur_sum == 100:
flag = 1
select.sort()
for i in select:
print(i)
return 1
return
for i in range(start, 9):
select.append(dwarfs[i])
subset(idx+1, cur_sum+dwarfs[i], i+1)
select.pop()
select = []
dwarfs = []
flag = 0
for i in range(9):
dwarfs.append(int(input()))
subset(0, 0, 0)
'알고리즘 문제 풀기 > 백준(Baekjoon)' 카테고리의 다른 글
[백준 알고리즘] 3980. 선발명단 - 파이썬 (0) | 2021.03.23 |
---|---|
[백준 알고리즘] 6603.로또 - 조합 (0) | 2021.03.21 |
[백준 알고리즘] 15655. N과 M (6) - 조합 (0) | 2021.03.20 |
[백준 알고리즘] 15654.N과 M (5) - 순열 (0) | 2021.03.20 |
[백준 알고리즘] 15652. N과 M (4) - 중복조합 (0) | 2021.03.20 |