[파이썬] 파이썬 순열과 조합, 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')]
'Developer > Python' 카테고리의 다른 글
[파이썬] 몫과 나머지 (0) | 2022.01.03 |
---|---|
[파이썬] ord(), chr() 함수 / 프로그래머스 시저 암호 (0) | 2021.12.27 |
[파이썬] 파이썬 map() 함수 (0) | 2021.08.09 |
[파이썬] 파이썬 join() 함수 (0) | 2021.08.09 |
[파이썬] 파이썬 정렬, 다중 조건 정렬, 람다(lambda) (0) | 2021.07.20 |