순열이란 서로 다른 n개의 원소에서 r개를 중복없이 순서를 고려하여 선택 혹은 나열하는 것을 의미한다.
파이썬에서는 itertools를 이용하면 순열 내장함수인 permutations를 사용할 수 있다.
하나의 리스트에서 r개의 원소를 선택하여 나열하는 방법과, 모든 원소를 순서를 고려하여 나열하는 방법 2가지가 있다.
하나의 리스트에서 r개의 원소를 선택하여 나열하는 방법
len() 함수를 사용하면 개수까지 구할 수 있다. 다음의 코드는 N개의 원소 중 2개의 원소를 선택하는 경우다. 확인해보자.
import itertools
A = list(map(int, input().split()))
nPr = list(itertools.permutations(A, 2))
print(nPr)
print(len(nPr))
1 4 5 2
[(1, 4), (1, 5), (1, 2), (4, 1), (4, 5), (4, 2), (5, 1), (5, 4), (5, 2), (2, 1), (2, 4), (2, 5)]
12
하나의 리스트에서 모든 원소를 순서를 고려하여 나열하는 방법
이 방법은 다음과 같이 반복문에서 활용할 수 있다.
import itertools
A = list(map(int, input().split()))
for perm in itertools.permutations(A):
print(perm)
1 4 2
(1, 4, 2)
(1, 2, 4)
(4, 1, 2)
(4, 2, 1)
(2, 1, 4)
(2, 4, 1)
두 개의 배열 A, B 에서 각각의 배열의 원소에 대한 모든 곱의 값을 구할 때 이용할 수 있다. (단, K번째 원소를 선택했다면 그 다음엔 K번째 원소를 선택할 수 없는 상황)
조합도 사용법이 같다. permutations 대신 combinations를 사용하면 된다.
'Algorithm > Python' 카테고리의 다른 글
[Python] 리스트 안의 특정 원소를 전부 삭제하는 법 (remove) (0) | 2024.06.30 |
---|---|
[Python] set 함수 (중복제거) (0) | 2023.09.27 |
[Python] 대소문자 변환 함수 4가지 (0) | 2023.09.17 |
[Python] join 함수 (0) | 2023.09.17 |
[Python] 튜플 정렬 (0) | 2023.08.01 |