[파이썬] itertools, 완전탐색을 공부합시다.Python2022. 3. 2. 10:30
Table of Contents
완전탐색이란?
문제에서 주어질 수 있는 모든 경우의 수를 탐색하는 알고리즘을 말합니다.
이번 글에서는 알고리즘에서 주로 쓰는 조합형 완탐 함수 4가지를 소개합니다.
- product
- permutations
- combinations
- combinations_with_replacement
조합형 :
product, 곱집합
대표적인 이름으로는 곱집합, 데카르트의 곱이라고 합니다.
곱집합은 for문 두개를 섞어놨다고 생각하시면 됩니다.
product(p, q, … [repeat=1]) 이런 형태로 사용할 수 있습니다.
예시
itertools.product('1234', '1234') 또는
itertools.product('1234', repeat=2)
[('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')]
permutations, 순열
반복 가능한 요소의 연속된 길이가 r인 순열을 반환합니다.
r이 지정되지 않았거나 None이라면, r의 기본값으로 반복가능한 수열의 길이가 적용됩니다. 가능한 모든 최대 길이의 순열이 생성됩니다.
가능한 모든 순서를 반환하며, 반복되는 요소가 없다는 특징이 있습니다.
permutations(p[, r]) 이런 형태로 사용 할 수 있습니다.
예시
itertools.permutations('1234', 2)
[('1', '2'), ('1', '3'), ('1', '4'),
('2', '1'), ('2', '3'), ('2', '4'),
('3', '1'), ('3', '2'), ('3', '4'),
('4', '1'), ('4', '2'), ('4', '3')]
combinations, 조합
반복 가능한 요소의 길이 r의 서브 시퀀스들을 반환합니다.
combinations(p, r) 이런 형태로 사용할 수 있습니다.
조합이기 때문에, 반복되는 요소가 없는 정렬된 순서들을 반환합니다.
예시
combinations('1234', 2)
[('1', '2'), ('1', '3'), ('1', '4'),
('2', '3'), ('2', '4'),
('3', '4')]
combinations_with_replacement, 중복이 가능한 조합
반복 가능한 요소의 길이 r의 서브 시퀀스들을 반환하는데, 개별 요소가 두번 이상 반복할 수 있습니다.
combinations_with_replacement(p, r) 이런 형태로 사용할 수 있습니다.
조합에서 개별 요소마다 두번 이상 반복할 수 있습니다.
예시
combinations_with_replacement('1234', 2)
[('1', '1'), ('1', '2'), ('1', '3'), ('1', '4'),
('2', '2'), ('2', '3'), ('2', '4'),
('3', '3'), ('3', '4'),
('4', '4')]
'Python' 카테고리의 다른 글
[백준 16920] 확장 게임 해설 및 풀이 (파이썬) (0) | 2022.03.20 |
---|---|
[파이썬] 분할 정복을 공부합시다. (0) | 2022.03.15 |
[파이썬 모듈 collections] deque 큐의 이해, 사용법 (0) | 2021.12.21 |
[백준 2108] 통계학 해설 및 풀이 (파이썬) (0) | 2021.12.20 |
[파이썬] 반올림 구현하기, 반올림 사사오입 구현 (2) | 2021.12.17 |
@임채성 :: 푸르고 개발 블로그
글 내용 중 잘못되거나 이해되지 않는 부분은 댓글을 달아주세요! 감사합니다! 문의: puleugo@gmail.com