728x90
알고리즘 문제를 풀면 순열과 조합을 쓸일이 있다.
구현하는 것도 나쁘지 않지만 시간이 급박할 때에는 직접구현보다는 라이브러리를 활용하는 것이 좋다.
import itertools
순열
서로 다른 n 개 중에 r개를 나열하는 경우의 수
import itertools
arr = ['1', '2', '3', '4']
per = list(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']
per = list(itertools.product(arr, repeat=2))
for ele in per:
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개를 선택하는 경우의 수 (원소의 순서 고려 X)
import itertools
arr = ['1', '2', '3', '4']
com = list(itertools.combinations(arr, 2))
for ele in com:
print(ele)
"""
('1', '2')
('1', '3')
('1', '4')
('2', '3')
('2', '4')
('3', '4')
"""
중복조합
중복 가능한 n개 중에 r개를 선택하는 경우의 수(원소의 순서 고려 X)
import itertools
arr = ['1', '2', '3', '4']
com = list(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')
"""
모든 원소 조합
여러개의 리스트의 모든 조합하는 경우의 수
import itertools
arr1 = ['1', '2', '3', '4']
arr2 = ['A', 'B', 'C']
arr3 = ['ㄱ', 'ㄴ']
result = list(itertools.product(arr1, arr2, arr3))
for ele in result:
print(ele)
"""
('1', 'A', 'ㄱ')
('1', 'A', 'ㄴ')
('1', 'B', 'ㄱ')
('1', 'B', 'ㄴ')
('1', 'C', 'ㄱ')
('1', 'C', 'ㄴ')
('2', 'A', 'ㄱ')
('2', 'A', 'ㄴ')
('2', 'B', 'ㄱ')
('2', 'B', 'ㄴ')
('2', 'C', 'ㄱ')
('2', 'C', 'ㄴ')
('3', 'A', 'ㄱ')
('3', 'A', 'ㄴ')
('3', 'B', 'ㄱ')
('3', 'B', 'ㄴ')
('3', 'C', 'ㄱ')
('3', 'C', 'ㄴ')
('4', 'A', 'ㄱ')
('4', 'A', 'ㄴ')
('4', 'B', 'ㄱ')
('4', 'B', 'ㄴ')
('4', 'C', 'ㄱ')
('4', 'C', 'ㄴ')
"""
728x90
'Programming > Python' 카테고리의 다른 글
[카카오 2021 인턴/파이썬] 미로 탈출 (0) | 2021.09.24 |
---|---|
[Python/파이썬] PriorityQueue & heapq / 우선순위큐와 힙큐 (0) | 2021.08.26 |
[Python/파이썬]함수로 정렬하기(소스만) (0) | 2021.08.22 |
[Python/파이썬]파이썬으로 XML 처리하기 (0) | 2020.04.12 |
[Python/파이썬]정규 표현식(심화) (0) | 2020.04.11 |