중복순열(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
'컴퓨터 > python' 카테고리의 다른 글
[python] 문자열로 된 식을 계산하기 - eval, exec (0) | 2023.06.15 |
---|---|
[python] 알파벳 리스트 만들기 (0) | 2023.06.15 |
[python] Permutations와 Combinations (순열과 조합) (0) | 2023.06.10 |
[Python][Error] ValueError: invalid literal for int() with base 10: '\n' (0) | 2023.05.11 |
[python] Tree 순회하기 (0) | 2023.04.18 |