[파이썬] 파이썬 순열과 조합, permutations/combinations

미음제

·

2021. 8. 24. 19:04

순열

 

서로 다른 n개의 원소를 사용해 r개를 택하여

일렬로 배열하는 경우이다.

 

순열은 순서가 있어, 원소의 종류가 같아도 순서가 다르면

다른 배열이 된다.

 

순열 공식

 

순열 예시

 

['a','b','c'] 라는 리스트가 있을 때,

2개의 배열로 나타내면 다음과 같다.

 

[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]

 

총 6가지가 되는데, 원소의 종류가 같은 것이 3가지가 있다.

[('a', 'b'), ('b', 'a')]

[('a', 'c'), ('c', 'a')]

[('b', 'c'), ('c', 'b')]

원소의 종류가 같아도, 순서가 다르기 때문에 다른 배열로 취급한다.

 

파이썬 permutations

 

for 문을 통해 순열을 만들 수 있지만,

시간적 효율성이 떨어진다.

Python에서는 외장함수를 이용해 순열을 만들 수 있다.

 

from itertools import permutations, combinations

arr = ['a','b','c']
pp = permutations(arr,2)

print(list(pp))

 

결과는 다음과 같이 출력된다.

[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]

 


조합

 

서로다른 n개의 원소를 사용해

순서와 관계없이 r개의 배열로 나타내는 것이다.

 

순열과 달리 원소의 종류가 같으면 같은 배열로 나타낸다.

 

조합 공식

 

조합 예시

 

['a','b','c'] 라는 리스트가 있을 때,

2개의 배열로 나타내면 다음과 같다.

 

[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]

 

총 6가지가 되는데, 원소의 종류가 같은 것이 3가지가 있다.

[('a', 'b'), ('b', 'a')]

[('a', 'c'), ('c', 'a')]

[('b', 'c'), ('c', 'b')]

 

위 3가지의 경우, 원소의 종류가 같기 때문에

같은 배열로 취급하게 되어

조합은 아래처럼 총 3가지로 만들어진다.

 

[('a', 'b'), ('a', 'c'), ('b', 'c')]

 

파이썬 Combinations

 

조합 역시 순열과 마찬가지로

Python 외장 함수를 사용하여 간단하게 만들 수 있다.

 

from itertools import permutations, combinations

arr = ['a','b','c']

cc = combinations(arr,2)
print(list(cc))

 

결과는 다음과 같이 출력된다.

[('a', 'b'), ('a', 'c'), ('b', 'c')]

 

 

반응형