This lesson is only available in Korean for now.
Lesson 14 of 20

순열 — 순서가 있는 뽑기

줄 세우기, 그리고 팩토리얼의 폭발

순열 — 순서가 있는 뽑기
누가 1등이고 누가 2등인지가 중요하면 순열입니다. 순서가 다르면 다른 경우예요.

학생 5명 중 3명을 뽑아 1등 · 2등 · 3등을 정합니다. 몇 가지일까요?

곱의 법칙을 씁니다. 1등은 5명 중 아무나(5가지), 2등은 남은 4명 중(4가지), 3등은 남은 3명 중(3가지). 5 × 4 × 3 = 60가지.

이렇게 순서를 따져서 뽑는 것을 순열(permutation)이라 하고 P(n, r) 또는 ₙPᵣ 라고 씁니다.

P(n, r) = n × (n−1) × … × (n−r+1) = n! / (n−r)!

여기서 n!(n 팩토리얼)은 1 × 2 × … × n 입니다. 0! = 1로 약속해요 — "아무것도 안 고르는 방법도 한 가지"라는 뜻입니다.

itertools.permutations 가 순열을 전부 만들어 줍니다.
Python Runs in your browser

🎮 직접 줄을 세워 보세요

사람 수와 뽑을 수를 바꿔 보세요. 순서를 바꾼 것이 왜 다른 경우인지 목록으로 확인할 수 있습니다. 원형으로 둘러앉는 경우도 함께 세어 줘요.

순열 실험실 — 줄 세우기와 원탁 앉기
Loading…
n!은 2ⁿ보다도 훨씬 빠르게 폭발합니다.
Python Runs in your browser

같은 것이 있는 순열

MISSISSIPPI 의 글자를 배열하는 방법은 몇 가지일까요? 11글자니까 11!… 이 아닙니다. 같은 글자끼리는 바꿔도 구별이 안 되니까요.

S가 4개, I가 4개, P가 2개 있으므로 중복된 만큼 나눠 줍니다.

11! / (4! × 4! × 2! × 1!) = 34,650

"같은 것을 구별하지 않는다"는 아이디어는 다음 강의 조합의 핵심이기도 합니다.

set() 으로 중복을 없애 세어 보면 공식과 같습니다.
Python Runs in your browser
회전해서 겹치는 것끼리 묶으면 정확히 n으로 나눠집니다.
Python Runs in your browser
🤔 Check yourself
7명 중 3명을 뽑아 회장 · 부회장 · 총무를 정하는 방법은?
🤔 Check yourself
"AABB" 의 글자를 배열하는 서로 다른 방법의 수는?
🤔 Check yourself
6명이 원탁에 둘러앉는 방법의 수는?