TIL/Python

[TIL] itertools 순열 조합 구하기 Python

아람2 2024. 9. 13. 19:00
반응형

2309 일곱 난쟁이에서 조합이 필요하다고 해서 itertools 를 공부한다 

 

순열 - 순서를 고려하여 뽑는 경우의 수 

서로 다른 n 개에서 r 개를 선택하여 일렬로 나열하는 경우의 수

조합 - 순서를 생각하지 않고 뽑는 경우의 수

서로 다른 n 개에서 순서를 생각하지 않고 r 개를 택하는 경우의 수 

중복 순열 Permutation with Repetition

중복 가능한 n 개에서 r 개를 택하여 일렬로 나열하는 경우의 수 

중복 조합 Combination with Repetition

중복 가능한 n 개에서 순서를 생각하지 않고 r 개를 택하는 경우의 수 

순열과 조합 예제 

import itertools

chars = ['A', 'B', 'C']

p = itertools.permutations(chars, 2)  # 순열
print(list(p)) 
# 결과 [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

c = itertools.combinations(chars, 2)  # 조합
print(list(c))
# 결과 [('A', 'B'), ('A', 'C'), ('B', 'C')]

cp = itertools.product(chars, repeat=2) # 중복 순열 
print(list(cp))
# 결과 [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]

cr = itertools.combinations_with_replacement(chars, 2)  # 중복 조합
print(list(cr))
# 결과 [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]

 

반응형