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')]
반응형