반응형
순열과 조합을 직접 구현하려다가 구현의 벽에 부딪혔고, (ㅠㅠ)
import itertools를 이용하여 간편하게 순열과 조합을 이용할 수 있는 방법을 찾았다.
순열 permutation
순열이란 몇 개를 골라 순서를 고려해 나열한 경우의 수를 말한다.
즉, '서로 다른 n개 중 r개를 골라 순서를 정해 나열한 경우의 수'이다.
순열은 순서를 고려하기 때문에
[A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열하면 [(A, B), (A, C), (B, A), (B, C), (C, A), (C, B)] 이다.
즉, (A, B)와 (B, A)는 다른 것이다.
import itertools
arr = ['A', 'B', 'C']
nPr = itertools.permutations(arr, 2)
print(list(nPr))
결과 : [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
from itertools import permutations
arr = ['A', 'B', 'C']
nPr = permutations(arr, 2)
print(list(nPr))
결과 : [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
조합 combination
조합이란 '서로 다른 n개 중에서 순서에 상관없이 r개를 뽑는 경우의 수'이다.
즉, 서로 다른 n개 중 r개를 골라 순서를 정해 나열한 경우의 수이다.
순열은 순서를 고려하지 않기 때문에
[A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열하면 [(A, B), (A, C), (B, C)] 이다.
즉, (A, B)와 (B, A)는 같은 것이다.
import itertools
arr = ['A', 'B', 'C']
nCr = itertools.combinations(arr, 2)
print(list(nCr))
결과 : [('A', 'B'), ('A', 'C'), ('B', 'C')]
반응형
'Problem Solving > Python Concepts' 카테고리의 다른 글
[Python] 리스트를 join 함수 활용하여 문자열로 만들기 (0) | 2022.10.06 |
---|---|
[Python] 파이썬 영문 대소문자 변환 (0) | 2022.09.27 |
[Python] 리스트의 문자열을 int로 변환 (0) | 2022.09.27 |
[Python] 파이썬 데이터 입력받기 (0) | 2022.09.26 |
[Python] 파이썬 숫자 각 자리수 분리 (0) | 2022.09.26 |