티스토리 뷰

BackEnd/Python

[Python] 순열과 조합

JINSUKUKU 2021. 12. 22. 00:38

순열 : permutation

✔️ 순열이란 주어진 숫자 중 n개를 골라 순서를 고려해 나열한 경우의 수를 말한다

✔️ 즉, 서로 다른 n 개 중 r 개를 골라 순서를 정해 나열하는 가짓수이다

✔️ 그리고 순열은 ‘Permutation’의 첫 글자 P를 따서 nPr로 표시한다

 

예를 들어 조별 활동을 위해 같은 조가 된 A, B, C 세 명의 학생 중 조장과 부조장을 뽑으려 한다

조장과 부조장을 뽑는 데 모두 몇 가지 경우의 수가 있을까?

 

 

A, B 두 사람을 뽑는다면 순서에 따라 (A, B)가 될 수도 있고 (B, A)가 될 수도 있다

(A, B)에서는 A는 조장, B가 부조장의 역할을 맡는다. 반면 (B, A)에서는 B가 조장의 역할을, A가 부조장의 역할을 맡는다.

둘은 엄연히 다르다. 이를 통해 순열은 순서를 고려한다는 것을 알 수 있다

파이썬으로 순열을 구현할 때에는 itertoolspermutations()를 사용한다

 

 
import itertools

n = ['A', 'B', 'C']
r = 2

nPr = itertools.permutations(n, r)
print(list(nPr))

 

 

 

조합 : combination

✔️ 조합이란 서로 다른 n개 중에서 r개(n≥r) 취하여 조를 만들 때, 이 하나하나의 조를 n개 중에서 r개 취한 조합이라고 한다

✔️ 조합의 총수는 nCr로 표시하는데 이 기호는 combination(조합)에서 따온 것이다

 

예를 들어 A, B, C 세 명의 학생 중 임원을 두 명 뽑으려 한다. 모두 몇 가지 경우의 수가 있을까?

 

 

A, B 두 사람을 뽑는다면 순서에 따라 (A, B)가 될 수도 있고 (B, A)가 될 수도 있다

하지만 (A, B)에서도 A와 B는 모두 임원이고, (B, A)역시 마찬가지로 A와 B 모두가 임원이다

조합은 (A, B)와 (B, A)는 같은 것으로 취급한다

 

 

즉, 조합은 순서를 고려하지 않기 때문에 A, B, C 세 명의 학생 중 임원을 2명 뽑는 방법은 (A, B), (A, C), (B, C)으로 총 3가지이다

파이썬으로 조합을 구현할 때에는 itertools combinations()를 사용한다

 

import itertools

n = ['A', 'B', 'C']
r = 2

nCr = itertools.combinations(n, r)
print(list(nCr))

 

 

 

 

 

 

 

[참고] 네이버 지식 백과 - 순열, 네이버 지식 백과 - 조합

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday