일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Import
- 코딩 테스트
- 트리
- 유사코드
- 파이썬
- 알고리즘의 조건 5가지
- python
- 프로그래머스
- 큐
- 유한소수 판별하기
- list
- 좋은 알고리즘
- 리스트
- html
- 코딩테스트
- 알고리즘의 조건
- 태그
- import itertools
- Combination
- 과일 장수
- 알고리즘 표현
- 자바
- itertools
- 스택
- Tree
- java
- 알고리즘
- LV.1
- 들여쓰기로 표현한 트리
- 자료구조
- Today
- Total
인천의 자유인
[Python] permutation(순열), combination(조합)에 대해 알아보기 본문
원래 일반적으로 순열과 조합을 구하기 위해서는 중첩 for문을 사용했어야 합니다. 적은 리스트일 경우에는 문제가 없지만 큰 수일 경우에는 문제가 생깁니다. 예를 들어 코딩테스트를 연습했을때에 시간 초과가 일어나는 것이죠.
그러한 의미에서 이번에 ptyhon의 itertools를 이용해서 for문 없이 순열과 조합을 구하는 방법에 대해 알아보고자 합니다.
순열(perminutation)
순열이란 로 다른 n 개 중 r 개를 골라 순서를 고려해 나열한 경우의 수를 말합니다.(출처: 순열 (naver.com))
순열을 구하는 방식은 다음과 같습니다. itertools.permutations(리스트명, 고를 개수)
예제를 통해 알아봅시다.
import itertools
data = [4,2,3,3,1]
a = itertools.permutations(data, 3)
print(list(a))
실행결과는 아래와 같습니다.

참고로 결과가 이렇게 나오는 것은 보기 for문을 이용해서 5개가 나올때 마다 들여쓰기를 했기 때문입니다!
조합(combination)
조합이란 서로 다른 n개 중에서 r개(n≥r) 취하여 조를 만들 때, 이 하나하나의 조를 n개 중에서 r개 취한 조합이라고 합니다.
(출처: 조합 (naver.com)) 조합은 순서를 고려하지 않는점이 재미있습니다. 그렇기 때문에 (1,3)과 (3,1)를 같은 것으로 취급합니다.
쓰는 방법은 다음과 같습니다. itertools.combinations(리스트명, 고를 개수)
예제를 통해 알아봅시다.
import itertools
data = [4,2,3,3,1]
a = itertools.combinations(data, 3)
print(list(a))
실행 결과는 아래와 같습니다.

알고리즘을 공부하면서 리스트에서 특정한 값을 중복되지 않게 골라 낼때 중첩 for문을 사용하지 않고 itertools를 통해 간단하게 구현할 수 있음을 알게 되었습니다. 매우 좋은 모듈인 것 같아 공부할겸 정리하게 되었습니다.
'Python > Python공부' 카테고리의 다른 글
파이썬 한줄로 if, for문 작성하기 (0) | 2024.06.12 |
---|---|
[컴퓨팅 기반 문제해결] 반복 구조와 문제해결1 (0) | 2024.06.11 |
[컴퓨팅 기반 문제 해결] 선택 구조와 문제해결 2 (0) | 2024.05.14 |
[컴퓨팅 기반 문제해결] 선택 구조와 문제 해결 1 (0) | 2024.05.06 |
[Python] random모듈에 대해 알아보자. (0) | 2024.05.02 |