파이썬에선 itertools 모듈의 permutations 함수를 이용해 쉽게 순열을 구할 수 있습니다.
다음의 코드로 리스트의 순열을 구할 수 있습니다.
import itertools
numbers = '123'
p = list(map(''.join, itertools.permutations(numbers)))
# p -> ['123', '132', '213', '231', '312', '321']
pools = ['a', 'b', 'c']
p = list(map(''.join, itertools.permutations(numbers)))
# p -> ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
p = list(itertools.permutations([1,2,3])
# p -> [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
permutations에 인자를 추가로 줄 수 있습니다. 몇 개를 사용해 순열을 만들지를 결정합니다.
import itertools
p = list(map(''.join, itertools.permutations(numbers, 2)))
# p -> ['12', '13', '21', '23', '31', '32']
p = list(map(''.join, itertools.permutations(numbers, 1)))
# p -> ['1', '2', '3']
비슷한 방식으로 combinations를 사용할 수 있습니다.
p = list(itertools.combinations([1,2,3], 2))
# p -> [(1, 2), (1, 3), (2, 3)]
'코딩테스트 > 알고리즘' 카테고리의 다른 글
주요 알고리즘 설명 및 문제 모음 (0) | 2021.07.07 |
---|---|
[알고리즘] 최단경로 - 다익스트라 알고리즘 (Dijkstra's algorithm) (0) | 2021.03.10 |
[알고리즘] 에라토스테네스의 체 (0) | 2021.02.26 |
[알고리즘] LCS (Longest Common Subsequence) 문제 (0) | 2021.02.15 |
[알고리즘] 동적 계획법 (Dynamic Programming) 코딩테스트 대비 정리 (0) | 2021.02.02 |
댓글