본문 바로가기
코딩테스트/알고리즘

[알고리즘] 파이썬에서 순열 조합 구하기 - itertools, permutations, combinations

by 윤호 2021. 2. 27.

파이썬에선 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)]

댓글