Python permutation , combination

홍찬기
2 min readJul 15, 2019

--

순열

순열이란 n개의 원소를 사용해서 순서를 정하여 r개의 배열로 나타내는 것을 말한다. 순열은 순서가 있기 때문에 원소의 종류가 같아도 순서가 다르면 다른배열이 된다.

순열 공식 : nPr = n!/(n-r)!

예를들어 [1,2,3] 이라는 리스트가 잇는데 이것을 2개의 배열로 나타내면 [(1,2),(1,3),(2,1),(2,3),(3,1),(3,2)] 총 6가지가 된다. 여기서 원소의 종류가 같은 것이 총 3가지가 있다. [(1,2),(2,1)] , [(1,3),(3,1)],[(2,3),(3,2)] 이렇게 원소의 종류가 같아도 순서가 다르기 때문에 다른 배열이 된다.

Python permutation

for 문을 이용해 permutation함수를 구현할수 있지만 그러면 코드가 너무 길어지기 때문에 Python에서는 간단하게 외장함수로 만들어놨다.

from itertools import permutationsa = [1,2,3]
permute = permutations(a,2)
print(list(permute))'''
결과
'''
[(1,2),(1,3),(2,1),(2,3),(3,1),(3,2)]

위와같이 간단하게 사용이 가능하다.

조합

조합이란 n개의 원소를 사용해서 순서의 관계없이 r개의 배열로 나타내는 것을 말한다. 조합은 순서가 없어서 원소의 종류가 같으면 같은 배열로 나타낸다.

조합 공식 : nCr=nPr/r!

예를들어 [1,2,3] 이라는 리스트가 잇는데 이것을 2개의 배열로 나타내면 [(1,2),(1,3),(2,1),(2,3),(3,1),(3,2)] 총 6가지가 된다. 여기서 원소의 종류가 같은 것이 총 3가지가 있다. [(1,2),(2,1)] , [(1,3),(3,1)],[(2,3),(3,2)] 원소의 종류가 같기 때문에 3가지의 원소는 같은 배열이 되서 [(1,2),(1,3),(2,3)] 총 3가지의 조합이 만들어진다.

Python combination

combination도 permutation과 마찬가지로 외장함수로 간단하게 사용하면 된다.

from itertools import combinationsa = [1,2,3]
combi = combinations(a,2)

print(list(combi))
'''
결과
'''
[(1,2),(1,3),(2,3)]

--

--

No responses yet