순열과 조합을 구해야 하는 알고리즘 문제는 종종 있어 왔다.
개인적으로는 java를 많이 사용했었는데, 이런 문제를 접할 때 마다 재귀를 사용해서 매번 순열과 조합을 찾아내는 일은 아주 힘들었었다.
그런데, 파이썬을 사용하다 보니 itertools라는 라이브러리를 알게되었고, 아주 간단하게 순열과 조합을 구할 수 있었다!
🍭 순열은 같은 원소의 구성을 가지고 있어도, 순서가 다르면 다른 것으로 간주한다.
from itertools import permutations
numbers = [1, 2, 3, 4]
for num in list(permutations(numbers, 2)):
print(num)
# 출력의 결과물
(1, 2)
(1, 3)
(1, 4)
(2, 1)
(2, 3)
(2, 4)
(3, 1)
(3, 2)
(3, 4)
(4, 1)
(4, 2)
(4, 3)
itertools에서 permutations 메소드를 사용하면 위와 같이 순열을 구할 수 있다.
permutations의 사용법은, parameter로 배열과 선택할 원소의 갯수를 입력한다.
🍘 permutations를 사용해 만든 결과물은 itertools.permutations라는 object이기 때문에, 사용을 위해서 list로 변환해 사용한다.
🍬 조합은 같은 원소의 조합이면 모두 같은 것으로 취급한다. 즉, 순서에 관계없이 어떤 원소의 구성으로 이루어졌는지만 센다.
from itertools import combinations
numbers = [1, 2, 3, 4]
print(combinations(numbers, 2))
for num in list(combinations(numbers, 2)):
print(num)
# 출력되는 결과물
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)
itertools에서 combinations 메소드를 사용하면 위와 같이 순열을 구할 수 있다.
combinations의 사용법은, permutations의 사용법과 같다. parameter로 배열과 선택할 원소의 갯수를 입력한다.
🍘 combinations를 사용해 만든 결과물은 itertools.combinations라는 object이기 때문에, 사용을 위해서 list로 변환해 사용한다.