n개의 원소 중 m개를 선택하는 모든 조합을 찾는 알고리즘을 구현
def make_combination(n, combinations, will_pick) :
if will_pick == 0 :
print(combinations)
return
start = combinations[-1] + 1 if combinations else 0
for i in range(start, n) :
combinations.append(i)
make_combination(n, combinations, will_pick - 1)
combinations.pop()
n = 4, will_pick=2라면(4개 중에서 2개를 고르기) 결과는 다음과 같다.
[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]
start는 중복을 피하고 다음 원소들 중에서 고르려고 있다.
참고로 for문 내의 코드를 make_combination(n, combinations + [i], will_pick - 1)로 줄일 수도 있다.
반응형
'Computer science > Algorithm' 카테고리의 다른 글
비트마스크 (0) | 2021.09.25 |
---|---|
LRU (0) | 2021.08.26 |
Union - Find 알고리즘 (0) | 2021.06.13 |
Expression Binary Tree (0) | 2021.03.17 |
[C] Stack (0) | 2021.03.08 |