곰퓨타의 SW 이야기

[python] 순열과 조합을 모듈로?? 본문

TIL/코테개념_python

[python] 순열과 조합을 모듈로??

곰퓨타 2020. 12. 28. 20:21

아래 문제를 해결하다가 , 순열과 조합을 한 결과를 리턴해주는 모듈이 똑똑한 파이썬에는 있지않을까..?해서 모듈을 찾게 되었다.

 

programmers.co.kr/learn/courses/30/lessons/42839

 

코딩테스트 연습 - 소수 찾기

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이

programmers.co.kr

 

역시 똑똑한 파이썬에는 itertools를 통해 순열과 조합을 구현할 수 있게 하였다..!!

 

 

1. 순열

순열은 고등학교 때 흔히 배웠던 nPr = n! / (n-r)!을 의미한다.

이는 순서를 고려하는 것으로  itertools를 활용하면 쉽게 순열을 찾을 수 있다.

 

import itertools

arr = ['1','2','3']
print(list(itertools.permutations(arr,2)))

#[('1', '2'), ('1', '3'), ('2', '1'), ('2', '3'), ('3', '1'), ('3', '2')]

 

permutation의 첫번째 파라미터로 순열을 적용하고자 하는 반복 가능한 객체를 넣고, 두번째 파라미터로 r에 해당하는 수를 넣어주면

쉽게 순열을 구현할 수 있다는 것을 알 수 있었다!

 

 

 

2. 조합

조합은 nCr = nPr / r! = n! / ((n-r)! x r!)  이다.

이는 순서를 고려하지 않는 것으로 itertools를 활용하면 쉽게 조합을 찾을 수 있다.

 

import itertools

arr = ['1','2','3']
print(list(itertools.combinations(arr,2)))

#[('1', '2'), ('1', '3'), ('2', '3')]

 

combination 또한  첫번째 파라미터로 조합을 적용하고자 하는 반복 가능한 객체를 넣고, 두번째 파라미터로 r에 해당하는 수를 넣어주면

쉽게 조합을 구현할 수 있다는 것을 알 수 있었다!

 

 

코딩테스트 문제를 해결하다 보면 수학적인 사고를 필요로 하는 문제가 많아서 유용하게 쓸 수 있을 것 같다..!⭐️

Comments