인천의 자유인

[Python] permutation(순열), combination(조합)에 대해 알아보기 본문

Python/Python공부

[Python] permutation(순열), combination(조합)에 대해 알아보기

Youngook 2024. 9. 2. 08:42
728x90
반응형

원래 일반적으로 순열과 조합을 구하기 위해서는 중첩 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를 통해 간단하게 구현할 수 있음을 알게 되었습니다. 매우 좋은 모듈인 것 같아 공부할겸 정리하게 되었습니다.

728x90
반응형