본문 바로가기

컴퓨터/python

[python] 중복 순열과 중복 조합

중복순열(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