728x90
알고리즘 문제를 풀다보면 순열과 조합을 쓸 일이 꽤 많다.
물론 없이도 풀 수 있겠지만 itertools 라이브러리를 사용하면 간단하게 구현이 가능하다!
import itertools
순열
서로 다른 n개 중 r개를 나열하는 경우의 수이다.
import itertools
arr=[1,2,3,4]
per=itertools.permutations(arr,2)
for ele in per:
print(ele)
"""
(1, 2)
(1, 3)
(1, 4)
(2, 1)
(2, 3)
(2, 4)
(3, 1)
(3, 2)
(3, 4)
(4, 1)
(4, 2)
(4, 3)
"""
중복 순열
중복 가능한 n개 중에 r개를 나열하는 경우의 수이다.
import itertools
arr=[1,2,3,4]
pro=itertools.product(arr,repeat=2)
for ele in pro:
print(ele)
"""
(1, 1)
(1, 2)
(1, 3)
(1, 4)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 1)
(3, 2)
(3, 3)
(3, 4)
(4, 1)
(4, 2)
(4, 3)
(4, 4)
"""
조합
서로 다른 n개 중 r개를 선택하는 경우의 수이다. (원소의 순서는 고려하지 않는다.)
import itertools
arr=[1,2,3,4]
com=itertools.combinations(arr,3)
for ele in com:
print(ele)
"""
(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)
"""
중복 조합
중복 가능한 n개 중 r개를 선택하는 경우의 수이다. (원소의 순서는 고려하지 않는다.)
import itertools
arr=[1,2,3,4]
com=itertools.combinations_with_replacement(arr,2)
for ele in com:
print(ele)
"""
(1, 1)
(1, 2)
(1, 3)
(1, 4)
(2, 2)
(2, 3)
(2, 4)
(3, 3)
(3, 4)
(4, 4)
"""
728x90
반응형
'개발 > Python' 카테고리의 다른 글
[Python] 데크(deque) (0) | 2022.05.13 |
---|---|
[파이썬] find, index 함수 (0) | 2022.01.13 |
[Python] sort(), sorted(), lambda (0) | 2022.01.12 |
[파이썬] collections 모듈 - Counter (사용빈도 확인) (0) | 2021.12.27 |
[파이썬] 올림, 내림, 반올림 (0) | 2021.12.27 |