DATA101
[파이썬] 순열, 조합, 중복 순열, 중복 조합 계산하기!(feat. itertools 라이브러리) 본문
안녕하세요, 오늘은 파이썬 itertools 라이브러리를 활용하여 순열(Permutation), 조합(Combination), 중복 순열(Permutation with reptition), 중복 조합(Combination with reptition)을 계산하는 방법에 대해 공유해 드립니다. 그럼 바로 시작하죠!
📚 목차
1. 순열(Permutation)
2. 조합(Combination)
3. 중복 순열(Permutation with repetition)
4. 중복 조합(Combination with repetition)
1. 순열(Permutation)
순열은
from itertools import permutations
dataset = ['A', 'B', 'C']
res = list(permutations(dataset, 3))
print(f"모든 조합: {res}") # [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
print(f"모든 경우의 수: {len(res)}") # 6
2. 조합(Combination)
조합은
from itertools import combinations
dataset = ['A', 'B', 'C']
res = list(combinations(dataset, 2))
print(f"모든 경우: {res}") # [('A', 'B'), ('A', 'C'), ('B', 'C')]
print(f"모든 경우의 수: {len(res)}") # 3
3. 중복 순열(Permutation with repetition)
중복 순열은
from itertools import product
dataset = ['A', 'B', 'C']
# 2개를 뽑아 일렬로 나열하는 경우의 수(단, 중복 허용)
res = list(product(dataset, repeat = 2))
print(f"모든 경우: {res}") # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
print(f"모든 경우의 수: {len(res)}") # 9
4. 중복 조합(Combination with repetition)
중복 조합은
from itertools import combinations_with_replacement
dataset = ['A', 'B', 'C']
# 2개를 뽑아 순서 고려없이 나열하는 경우의 수(단, 중복 허용)
res = list(combinations_with_replacement(dataset, 2))
print(f"모든 경우: {res}") # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
print(f"모든 경우의 수: {len(res)}") # 9
마치며...
오늘은 파이썬 표준 라이브러리를 활용해 순열, 조합, 중복 순열, 중복 조합을 계산하는 방법에 대해 알아봤습니다. itertools 라이브러리를 활용하면 일일이 코드로 구현하지 않고도 쉽게 결괏값을 얻을 수 있다는 큰 장점이 있습니다. 따라서 시간 효율 측면이나 계산 정확도를 보장하기 위해서는 해당 라이브러리의 사용방법에 대해 숙지하는 것을 추천해 드립니다.
포스팅 내용에 오류가 있을 경우 댓글 남겨주시면 감사드리겠습니다.
그럼 오늘도 즐거운 하루 보내시길 바랍니다 :)
고맙습니다.
'SW 개발 > Python' 카테고리의 다른 글
[파이썬] Counter 함수: 리스트 내 원소 개수 구하기!(feat. collections 라이브러리) (0) | 2021.04.23 |
---|---|
[파이썬] 이진 탐색 구현을 도와주는 bisect 라이브러리에 대해 알아보자! (0) | 2021.04.22 |
[파이썬] f-string 문법에 대해 알아보자! (0) | 2021.04.20 |
[파이썬] 집합(Set) 자료형에 대해 알아보자! (0) | 2021.04.19 |
[파이썬] 딕셔너리(Dictionary, 사전) 자료형에 대해 알아보자! (0) | 2021.04.18 |