플그래밍/파이써언

[파이썬] 간단하게 조합(Combination) 구하기

훗티v 2022. 10. 25. 16:14
728x90
반응형

파이썬에서 일일히 수동으로 조합을 계산하려다보면 코드도 너무 길어지고 시간도 오래걸리는데요... 이를 간단하게 구할 수 있는 방법에 대해서 알아볼께요.

 

일단 코드부터...

from itertools import combinations
import math

example = [1, 2, 3, 4, 5, 6, 7, 8, 9]

n = len(example)
r = 2

print(f'{int(math.factorial(n)/(math.factorial(r)*math.factorial(n-r)))}개\n')

print("기존 리스트")
print(str(example))

results = list(combinations(example, r))

print(f"\n가능한 모든 조합 ({len(results)}개)")
print(str(results))
36개

기존 리스트
[1, 2, 3, 4, 5, 6, 7, 8, 9]

가능한 모든 조합 (36개)
[(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), 
(2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), 
(3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), 
(4, 5), (4, 6), (4, 7), (4, 8), (4, 9), 
(5, 6), (5, 7), (5, 8), (5, 9), (6, 7), 
(6, 8), (6, 9), 
(7, 8), (7, 9), 
(8, 9)]

 

9개의 숫자를 포함하는 리스트에서 2개씩 골랐을 때의 모든 경우의 수는 36입니다. (n = 9, r = 2)

 

 

개수는 math > factorial 기능으로 쉽게 구할 수 있지만 경우의 수를 모두 출력하려면 itertools를 사용하는게 더 수월하답니다. itertools의 combinations를 불러와주고 list와 각 조합의 원소 개수(r)을 설정해주면 list로 결과물을 출력해준답니다.

 

반응형