Computer science/Algorithm

Combination(조합)

잔망루피 2021. 8. 18. 16:02

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