반응형
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')]
반응형
'TIL > Python' 카테고리의 다른 글
[TIL] 이분 탐색 Binary Search (2) | 2024.09.18 |
---|---|
[TIL] 백트래킹 BackTracking (2) | 2024.09.17 |
[TIL] sorted() Python (0) | 2024.09.13 |
[TIL] 큐 Queue Python (2) | 2024.09.12 |
[TIL] 스택 Stack Python (1) | 2024.09.11 |