[Python] 순열, 조합, 중복순열, 중복조합 (itertools를 활용한 구현)
이 글을 참고했다.
조합(Combination)
- 순서를 고려하지 않고 뽑는 경우이다.
- {1,2}, {2,1} 은 한 가지 경우로 취급한다.
- nCr: 서로 다른 n개에서 순서를 생각하지 않고 r개를 택하는 경우의 수
from itertools import combinations
lst = [1,2,3]
for x in combinations(lst, 2):
print(x)
# (1, 2)
# (1, 3)
# (2, 3)
순열 (Permutation)
- 순서를 고려하여 뽑는 경우이다.
- {1,2}, {2,1} 은 두 가지 경우로 취급한다.
- nPr: 서로 다른 n개에서 r개를 택하여 일렬로 나열하는 경우의 수
from itertools import permutations
lst = [1,2,3]
for x in permutations(lst, 2):
print(x)
# (1, 2)
# (1, 3)
# (2, 1)
# (2, 3)
# (3, 1)
# (3, 2)
중복 조합
- 중복조합은 조합과는 다르게 같은 숫자를 중복하여 사용할 수 있다.
- nHr: 중복 가능한 n개에서 순서를 생각하지 않고 r개를 택하는 경우의 수
from itertools import combinations_with_replacement
lst = [1,2]
for x in combinations_with_replacement(lst, 3):
print(x)
# (1, 1, 1)
# (1, 1, 2)
# (1, 2, 2)
# (2, 2, 2)
중복 순열
- 중복순열은 순열과는 다르게 같은 숫자를 중복하여 사용할 수 있다.
- nπr : 중복 가능한 n개에서 r개를 택하여 일렬로 나열하는 경우의 수
from itertools import product
lst = [1,2]
# 2개중 중복을 포함하여 3개 뽑는 경우
for x in product(lst, repeat = 3):
print(x)
# (1, 1, 1)
# (1, 1, 2)
# (1, 2, 1)
# (1, 2, 2)
# (2, 1, 1)
# (2, 1, 2)
# (2, 2, 1)
# (2, 2, 2)
💛 개인 공부 기록용 블로그입니다. 👻