반응형
👀 함수 ( permutations() / combinations() ) 👀
1. permutations() : 어떤 iterator에 대한 순열을 얻는 함수
2. combinations() : 어떤 iterator에 대한 조합을 얻는 함수
순열과 조합 모두 itertools라는 패키지의 모듈입니다. 알고리즘 문제를 풀다보면 가짓수에 대해 생각해야할 경우가 있는데, 이 두 함수를 사용하면 좀 더 간단하게 해결할 수 있는 경우가 존재합니다.
1. permutation() : 순열(nPr)
- 순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미
- 순서가 상관있으므로 [1,2,3] != [3,2,1]
- 리스트, 튜플, 딕셔너리 모두 가능
from itertools import permutations
a = [1, 2, 3]
b = (1, 2, 3)
c = {"m": 1, "n": 2, "o": 3}
print("aP2:", list(permutations(a, 2)))
print("aP3:",list(permutations(a, 3)))
print("bP2:",list(permutations(b, 2)))
print("bP3:",list(permutations(b, 3)))
print("cP2:",list(permutations(c, 2)))
print("cP3:",list(permutations(c, 3)))
# 출력
# aP2: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
# aP3: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
# bP2: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
# bP3: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
# cP2: [('m', 'n'), ('m', 'o'), ('n', 'm'), ('n', 'o'), ('o', 'm'), ('o', 'n')]
# cP3: [('m', 'n', 'o'), ('m', 'o', 'n'), ('n', 'm', 'o'), ('n', 'o', 'm'), ('o', 'm', 'n'), ('o', 'n', 'm')]
2. combinations() : 조합 (nCr)
-
조합이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미
-
순서가 상관 없으므로 [1,3] = [3,1]
-
리스트, 튜플, 딕셔너리 모두 가능
from itertools import combinations
a = [1, 2, 3]
b = (1, 2, 3)
c = {"m": 1, "n": 2, "o": 3}
print("aC2:", list(combinations(a, 2)))
print("aC3:",list(combinations(a, 3)))
print("bC2:",list(combinations(b, 2)))
print("bC3:",list(combinations(b, 3)))
print("cC2:",list(combinations(c, 2)))
print("cC3:",list(combinations(c, 3)))
# 출력
# aC2: [(1, 2), (1, 3), (2, 3)]
# aC3: [(1, 2, 3)]
# bC2: [(1, 2), (1, 3), (2, 3)]
# bC3: [(1, 2, 3)]
# cC2: [('m', 'n'), ('m', 'o'), ('n', 'o')]
# cC3: [('m', 'n', 'o')]
<참고>
반응형
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 정렬 다중 조건, 파이썬 정렬 키 여러개 (0) | 2021.01.24 |
---|---|
[Python] 파이썬 나눗셈 나머지, 몫 구하기 ( / , %, // , divmod) (0) | 2021.01.12 |
[Python] upper(), lower() 함수 / 파이썬 문자열 대문자 소문자 변환 (0) | 2021.01.12 |
[Python] islower(), isupper() 함수 / 파이썬 문자열 대문자 소문자 체크 (0) | 2021.01.12 |
[Python] isalpha(), isdigit() 함수 / 문자열 체크하기 (0) | 2021.01.12 |