요약
순서가 달라지면 다른 결과인 경우는 순열, 순서를 무시하고 구성만 고르면 조합입니다. 공식을 고르기 전에 순서가 중요한지와 같은 대상을 다시 고를 수 있는지 확인합니다.
순열과 조합은 어떻게 구분하나요?
순서가 결과를 바꾸면 순열, 순서를 무시하고 구성만 고르면 조합입니다. 먼저 순서, 다음으로 같은 대상을 다시 선택할 수 있는지 확인합니다.
| 조건 | 계산 | A·B·C 중 2개 예 |
|---|---|---|
| 순서가 중요하고 중복은 허용하지 않음 | 순열 nPr |
회장·부회장: 6가지 |
| 순서가 중요하지 않고 중복도 허용하지 않음 | 조합 nCr |
팀원 2명: 3가지 |
| 순서가 중요하고 같은 대상을 다시 고를 수 있음 | 각 자리 선택 수의 곱 | 두 자리 코드: 9가지 |
아래 순열·조합 공식의 적용 조건은 서로 다른 n개에서 중복 없이 r개를 고르고 정수 0≤r≤n인 경우입니다. 중복을 허용하는 문제에 그대로 적용하지 않습니다.
정의와 공식의 참고 자료는 OpenStax College Algebra 2e의 Counting Principles입니다. 아래 작은 예제는 직접 나열해 공식과 비교할 수 있습니다.
| 기호 | 읽는 법 | 공식 |
|---|---|---|
| n! | n 팩토리얼 | n×(n−1)×…×1, 0!=1 |
| nPr | n개 중 r개 순열 | n!/(n−r)! |
| nCr | n개 중 r개 조합 | n!/[r!(n−r)!] |
각 첫 선택마다 둘째 선택이 b개씩 가능하고 첫 선택이 a개라면 곱의 법칙으로 a×b입니다. 선택마다 가능한 다음 수가 달라지면 경우를 나누어 합산합니다.
가장 작은 예제
A,B,C에서 회장·부회장을 뽑으면 AB,AC,BA,BC,CA,CB의 6가지입니다. 첫 역할 3가지, 다음 역할 2가지라 3P2=6입니다. 두 팀원만 뽑으면 {A,B},{A,C},{B,C}의 3가지입니다. 각 조합을 2!번씩 세었으므로 3C2=6/2=3입니다.
헷갈리는 반례
중복을 허용하는 두 자리 코드에 A,B,C를 쓰면 AA도 가능하여 3²=9가지입니다. 중복 없는 순열 3P2=6을 적용하면 틀립니다. 단순히 ‘나열’이라는 단어보다 실제 결과에서 순서와 반복을 구분하는지 봅니다.
손으로 풀어보기
서로 다른 기능 5개에서 이번에 할 2개만 고르면 5C2=5×4/(2×1)=10입니다. 같은 5개 중 1순위·2순위를 정하면 5P2=5×4=20입니다. 두 작업의 역할을 바꾸어도 같은 결과인지가 차이입니다.
r=0이면 아무것도 선택하지 않는 경우 하나라 nP0=nC0=1입니다. 모든 대상을 고르면 nCn=1이며 nPn=n!입니다.
선택: JavaScript로 검산하기
코드 직접 실행
본문 예제를 선택하고 실제 계산 결과를 확인합니다.
예제 크게 보기 (새 탭)손풀이 뒤 선택해서 실행하는 짧은 전체 코드입니다. 브라우저 Console 또는 Node.js가 준비된 환경의 check.mjs에서 실행할 수 있으며 수학 학습에 설치는 필수가 아닙니다.
function factorial(n) {
let result = 1;
for (let i = 2; i <= n; i += 1) result *= i;
return result;
}
const n = 5;
const r = 2;
console.log('nPr', factorial(n) / factorial(n - r));
console.log('nCr', factorial(n) / (factorial(r) * factorial(n - r)));
기대 결과: nPr 20, nCr 10이 출력됩니다.
n=5,r=2의 작은 값만 검산합니다. Number로 큰 팩토리얼을 계산하면 정밀도와 표현 범위를 넘을 수 있고, 이 함수는 일반 입력 검증용 API가 아닙니다.
자주 발생하는 오해와 교정
조합에서 선택 순서가 무의미한지 먼저 확인합니다. 복원 추출을 중복 없는 순열 공식에 넣지 않습니다. nCr에서 r!로 나누는 이유는 같은 구성의 r!가지 순서를 하나로 묶기 때문입니다.
직접 풀어볼 문제와 해설
쉬운 개념
먼저 순서를 바꾸면 다른 결과인지, 그다음 같은 대상을 다시 쓸 수 있는지 묻습니다. 순서가 다른 결과이면 순열, 순서가 같으면 조합입니다.
단계별 예제
- 서로 다른 A,B,C,D에서 2명을 1순위·2순위로 정하면 4×3=12입니다.
- 역할 없는 2인 팀은 각 쌍을 2번씩 센 셈이라 12÷2=6입니다.
- 같은 글자를 다시 쓸 수 있는 길이 2 코드는 각 자리에 4가지이므로 4×4=16입니다.
직접 풀 문제
A,B,C,D,E 다섯 글자로 길이 2의 코드를 만들 때 반복 허용과 반복 금지의 경우의 수를 각각 구하세요.
정답·해설 보기
- 반복 허용이면 첫 자리 5가지, 둘째 자리 5가지로 5²=25입니다.
- 반복 금지면 5×4=20입니다. 코드는 AB와 BA가 다르므로 조합 5C2=10을 쓰지 않습니다.
다음 학습
8회차에서 가로 행·세로 열과 2차원 배열의 위치를 읽습니다. 다음 글 읽기
학습 완료 체크리스트
- 정의의 적용 범위와 기호를 말로 설명할 수 있습니다.
- 위 손풀이를 답을 가린 상태에서 다시 계산합니다.
- 반례가 어떤 조건을 어기는지 설명합니다.
알고리즘 수학 노트
누적 이전 체크포인트: discrete-step-06-boolean. 아래는 이번 회차의 완성 예시입니다. 자신의 다른 예제 하나를 덧붙여도 좋습니다.
백트래킹을 시작하기 전에 ‘역할 배치인가, 부분집합 선택인가’를 적습니다. 개수 10을 구하는 일과 10개 선택을 실제 생성하는 일은 다릅니다. 공식의 n,r 범위와 복원 여부, 3명2역할의 여섯 나열과 세 조합, 기능 선택 10·우선순위 20을 기록합니다.
완료 체크포인트
discrete-step-07-counting
다음 학습
행과 열 쉽게 구분하기: 2열 종대까지 한 번에 외우는 방법에서 다음 개념을 이어갑니다.
글 소개·학습 준비·전체 목차

이산수학 · 7 / 13
순열·조합 구분법: 차이와 공식, 예제로 이해하기
순열과 조합은 공식을 먼저 외우면 가장 쉽게 섞이는 단원입니다. 먼저 순서가 중요한지, 같은 대상을 중복해서 고를 수 있는지 질문한 뒤 작은 경우를 직접 나열합니다.
이번 글에서 배우는 내용
- 순서와 중복 허용을 따로 질문합니다.
- 공식 전에 작은 경우를 나열합니다.
- 경우의 수 계산과 모든 경우 생성의 차이를 압니다.
선수 지식
곱셈·팩토리얼과 집합에서 서로 다른 원소를 고르는 뜻을 이해하면 됩니다.
목차
이 글이 도움이 되었나요?
읽음 기록
읽음 — / 전체 13개 · 필수 13개
새 글 받아보기
RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.