컴퓨터/python
[python] 중복 순열과 중복 조합
뽀또롱
2023. 6. 13. 22:49
중복순열(Permutation with repetition)
- 서로 다른 n개에서 r개를 선택할 때 순서를 고려하면서 중복하여 뽑는 경우의 수 (n의r승)
- ex) A,B,C가 있다고 할 때 순서를 고려하면서 2개를 중복하여 뽑는 모든 경우의 수는 다음과 같다.
AA
AB
AC
BB
BA
BC
CC
CA
CB
3**2=9
총 9가지
중복조합(Combination with repetition)
- 서로 다른 n개에서 r개를 선택할 때 순서를 고려하지 않고 중복하여 뽑는 경우의 수 (n+r-1Cr)
- ex) A,B,C가 있다고 할 때 순서를 고려하지 않고 2개를 중복하여 뽑는 모든 경우의 수는 다음과 같다.
AA
AB
BB
CC
AC
CA
4C2 = 4P2/2! = (4*3)/(2*1) = 6
총 6가지
python의 순열과 조합
python에서는 모듈 itertools를 이용하여 순열과 조합 뿐만 아니라 중복 순열과 중복 조합도 사용할 수 있다.
순열은 product를
조합은 combinations_with_replacement를 import 한다.
product 함수는 뽑고자 하는 데이터의 수를 repeat 속성값으로 넣어주어야한다.
from itertools import product, combinations_with_replacement
lst = ['A', 'B', 'C']
for i in product(lst,repeat=2):
print("중복 순열 :", i)
print()
for i in combinations_with_replacement(lst,2):
print("중복 조합 :", i)
#중복 순열 : ('A', 'A')
#중복 순열 : ('A', 'B')
#중복 순열 : ('A', 'C')
#중복 순열 : ('B', 'A')
#중복 순열 : ('B', 'B')
#중복 순열 : ('B', 'C')
#중복 순열 : ('C', 'A')
#중복 순열 : ('C', 'B')
#중복 순열 : ('C', 'C')
#중복 조합 : ('A', 'A')
#중복 조합 : ('A', 'B')
#중복 조합 : ('A', 'C')
#중복 조합 : ('B', 'B')
#중복 조합 : ('B', 'C')
#중복 조합 : ('C', 'C')
728x90