순열과 조합은 "몇 가지 방법이 있는가"를 세는 기본 도구입니다. 이 계산기는 n개 중 r개를 뽑을 때의 순열(nPr)과 조합(nCr)을 정확한 정수로 계산하고, 곱셈 전개식, 중복순열(nr)과 중복조합(nHr)까지 한 화면에 함께 보여줍니다. 비밀번호 경우의 수, 로또 같은 복권 확률, 팀·대표 선발, 줄 세우기 문제처럼 "순서가 중요한가?"만 판단하면 바로 답을 얻을 수 있는 상황에서 쓰도록 만들었습니다.
순열(nPr)과 조합(nCr)의 차이
순열(Permutation, nPr)은 서로 다른 n개 중 r개를 순서를 구분해서 뽑아 나열하는 경우의 수이고, 조합(Combination, nCr)은 순서를 구분하지 않고 r개를 뽑는 경우의 수입니다. 판단 기준은 하나입니다. 뽑은 결과를 뒤섞었을 때 다른 결과로 취급하면 순열, 같은 결과로 취급하면 조합입니다. 5명 중 반장·부반장·총무를 정하면 직책이 달라 순열이고, 5명 중 청소 당번 3명을 정하면 누가 먼저든 같은 팀이라 조합입니다.
계산 공식
순열: nPr = n! ÷ (n − r)! = n × (n−1) × … × (n−r+1)
조합: nCr = n! ÷ (r! × (n − r)!) = nPr ÷ r!
중복순열: nr (매번 n가지 중 고르기)
중복조합: nHr = (n+r−1)Cr (같은 것을 여러 번 골라도 되고 순서는 무시)
조합이 순열보다 항상 작거나 같은 이유는 같은 r개 묶음이 r!가지 순서로 나열되기 때문입니다. 서로 다른 3개를 나열하는 방법은 3! = 6가지이므로, 순서를 지우면 경우의 수가 정확히 6분의 1로 줄어듭니다. 이 계산기는 팩토리얼 전체를 구하지 않고 n × (n−1) × … × (n−r+1)을 차례로 곱한 뒤 r!로 나누는 방식(BigInt 연산)을 사용해 n이 큰 경우에도 오차 없는 정수 결과를 냅니다.
nCr 값 한눈에 보기 (n = 10)
조합은 r = n/2 근처에서 가장 크고 양 끝으로 갈수록 작아지며, nCr = nC(n−r) 대칭성을 가집니다. 아래 표는 빌드 시 공식으로 계산한 값입니다.
| r | 10Pr (순열) | 10Cr (조합) |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 10 | 10 |
| 2 | 90 | 45 |
| 3 | 720 | 120 |
| 4 | 5,040 | 210 |
| 5 | 30,240 | 252 |
| 6 | 151,200 | 210 |
| 7 | 604,800 | 120 |
| 8 | 1,814,400 | 45 |
| 9 | 3,628,800 | 10 |
| 10 | 3,628,800 | 1 |
생활 속 경우의 수
| 상황 | 계산 | 경우의 수 |
|---|---|---|
| 10명 중 1·2·3등 (순서 있음) | 10P3 | 720 |
| 10명 중 3명 선발 (순서 없음) | 10C3 | 120 |
| 26개 알파벳 중 4개를 나열 (중복 없음) | 26P4 | 358,800 |
| 8명 중 3명 한 줄로 세우기 | 8P3 | 336 |
| 30명 중 대표 3명 선출 | 30C3 | 4,060 |
| 52장 카드 중 5장 받기 (순서 무시) | 52C5 | 2,598,960 |
| 45개 숫자 중 6개 고르기 (6/45 복권) | 45C6 | 8,145,060 |
| 숫자 4자리 비밀번호 (중복 허용) | 10^4 | 10,000 |
검산된 계산 예시
예시 1. 10명 중 3명을 뽑아 1·2·3등을 정한다. 순서가 있으므로 10P3 = 10 × 9 × 8 = 720가지입니다. 같은 3명을 순서 없이 뽑기만 한다면 720 ÷ 3! = 720 ÷ 6 = 120가지(10C3)입니다.
예시 2. 45개 숫자 중 6개를 고르는 6/45 방식 복권. 순서를 보지 않으므로 45C6 = 8,145,060가지입니다. 한 줄이 1등 번호와 맞을 확률은 1 ÷ 8,145,060, 약 0.0000123%입니다.
예시 3. 숫자 4자리 비밀번호. 각 자리에 0~9 중 같은 숫자를 다시 써도 되므로 중복순열 104 = 10,000가지입니다. 서로 다른 숫자만 쓰라는 조건이면 10P4 = 10 × 9 × 8 × 7 = 5,040가지로 줄어듭니다.
같은 것이 섞인 줄 세우기: 나눗셈으로 겹침 제거
글자나 물건 중 같은 것이 있으면 그것들끼리 자리를 바꿔도 결과가 같으므로, 전체 n!을 같은 것의 팩토리얼로 나눕니다. 이 계산기의 nPr은 모두 서로 다른 대상만 가정하기 때문에 이런 유형은 아래 표처럼 직접 식을 세워야 합니다. 표의 값은 빌드 시 n! ÷ (a! × b! × …)로 계산했습니다.
| 단어 | 글자 수 | 식 | 모두 다르다고 볼 때(n!) | 실제 서로 다른 배열 |
|---|---|---|---|---|
| AABC | 4 | 4! ÷ (2!) | 24 | 12 |
| BANANA | 6 | 6! ÷ (3! × 2!) | 720 | 60 |
| LETTER | 6 | 6! ÷ (2! × 2!) | 720 | 180 |
| MISSISSIPPI | 11 | 11! ÷ (4! × 4! × 2!) | 39,916,800 | 34,650 |
MISSISSIPPI는 11글자라 11! = 39,916,800이지만 S 4개, I 4개, P 2개가 겹치므로 24 × 24 × 2 = 1,152로 나눠 34,650가지가 됩니다. 이처럼 겹침 보정이 필요한 문제를 일반 nPr로 풀면 답이 크게 부풀려집니다.
6/45 복권에서 일치 개수별 경우의 수
6개 번호를 고르는 방식에서 1등 확률만 보면 감이 오지 않으므로, 한 줄을 샀을 때 당첨 번호 6개 중 k개가 일치하는 경우의 수를 6Ck × 39C(6−k)로 계산했습니다(맞는 번호 6개 중 k개, 틀린 번호 39개 중 6−k개를 고르는 방법의 수). 전체는 45C6 = 8,145,060가지이고, 아래 일치 개수별 경우의 수를 모두 더하면 정확히 8,145,060가지가 되어 전체와 일치합니다. 실제 복권의 등수 구분은 보너스 번호 등 판매처의 규정에 따르므로 이 표는 순수한 확률 계산입니다.
| 일치 개수 | 경우의 수 | 확률 |
|---|---|---|
| 6개 | 1 | 1.23e-5% |
| 5개 | 234 | 0.0029% |
| 4개 | 11,115 | 0.1365% |
| 3개 | 182,780 | 2.24% |
| 2개 | 1,233,765 | 15.15% |
| 1개 | 3,454,542 | 42.41% |
| 0개 | 3,262,623 | 40.06% |
6개를 모두 맞히는 경우는 한 가지뿐이어서 1등 확률은 위 표와 같이 극히 작고, 3개 일치도 약 2.24%에 그칩니다. 여러 장을 사면 확률이 장 수에 비례해 커지지만 여전히 작은 수라는 점은 달라지지 않습니다.
비밀번호 전수 탐색 규모 비교
문자 종류 수 n과 길이 r로 중복순열 nr을 구하고, 초당 10억 회(109) 시도한다고 가정해 전부 시도하는 최대 시간을 나눗셈으로 환산한 표입니다. 시도 속도는 설명용 가정이며 실제 공격 환경, 서비스의 시도 횟수 제한, 해시 방식에 따라 크게 달라집니다. 이 표는 "경우의 수의 규모"를 비교하는 용도로만 보세요.
| 문자 구성 | 4자리 | 6자리 | 8자리 | 10자리 |
|---|---|---|---|---|
| 숫자만 (n=10) | 10,000 1초 미만 | 1,000,000 1초 미만 | 100,000,000 1초 미만 | 10,000,000,000 10초 |
| 영소문자 (n=26) | 456,976 1초 미만 | 308,915,776 1초 미만 | 208,827,064,576 3분 | 1.41e+14 1.6일 |
| 영문 대소문자+숫자 (n=62) | 14,776,336 1초 미만 | 56,800,235,584 57초 | 2.18e+14 2.5일 | 8.39e+17 27년 |
| 키보드 출력 가능 문자 (n=94) | 78,074,896 1초 미만 | 689,869,781,056 11분 | 6.10e+15 70.6일 | 5.39e+19 1,707년 |
길이를 2자리 늘리는 것과 문자 종류를 늘리는 것 중 어느 쪽이 효과가 큰지는 표에서 바로 비교됩니다. 숫자만 쓴 10자리(100억 가지)보다 영문 대소문자와 숫자를 섞은 8자리(약 2.18×1014)가 경우의 수에서 훨씬 큽니다. 다만 사람이 외우기 쉬운 단어나 생일을 쓰면 실제로 시도해야 할 후보가 훨씬 줄어들기 때문에, 경우의 수가 큰 것과 안전한 것은 같지 않습니다.
이 계산기로 풀 수 있는 문제 유형 판별
문제를 읽고 아래 세 가지를 순서대로 물으면 어느 공식인지 거의 결정됩니다. 첫째, 뽑은 대상이 서로 다른가(같은 것이 섞였다면 위의 나눗셈 보정). 둘째, 뽑은 것을 다시 넣는가(넣으면 nr 또는 nHr). 셋째, 순서가 결과를 바꾸는가(바꾸면 P, 안 바꾸면 C). 예를 들어 "서로 다른 책 8권 중 3권을 책장에 순서대로 꽂기"는 서로 다르고, 다시 넣지 않으며, 순서가 중요하므로 8P3 = 336입니다. "같은 맛 아이스크림 3개를 5가지 맛에서 고르기(맛은 중복 가능)"는 순서가 없고 중복이 허용되므로 5H3 = 7C3 = 35입니다. 이 두 값은 입력 칸에 n=8, r=3 또는 n=5, r=3을 넣으면 결과 화면의 순열과 중복조합 칩으로 바로 확인할 수 있습니다.
입력과 출력에서 알아 둘 점
n과 r은 정수만 받으며, 빈칸이나 소수, 음수, 1000을 넘는 n, n보다 큰 r을 넣으면 계산하지 않고 이유를 안내합니다. 조합은 내부적으로 r과 n−r 중 작은 쪽으로 계산해 곱셈 횟수를 줄이고, 결과는 BigInt 정수라 100C50처럼 30자리가 넘는 값도 반올림 없이 표시됩니다. 중복순열과 중복조합은 값이 60자리를 넘으면 자릿수만 표시해 화면이 길어지지 않게 했습니다. "결과 복사" 버튼은 현재 모드의 식과 값(예: "10C3 = 120")을 쉼표 없는 정수 형태로 복사하므로 메모나 다른 계산에 붙여 넣기 쉽습니다. n = 0, r = 0 같은 경계 입력은 1가지로 처리하고, n = 0이고 r > 0인 조합은 r이 n을 넘으므로 오류 안내가 나옵니다.
흔한 실수와 한계
- 순서 여부를 잘못 판단한다. 가장 흔한 오류입니다. "A, B 순서로 뽑은 것"과 "B, A 순서로 뽑은 것"이 결과에서 다르게 대우받는지 먼저 확인하세요.
- "자물쇠 조합(combination lock)"은 조합이 아니다. 숫자 순서가 중요하므로 수학적으로는 순열(또는 중복순열)입니다.
- 뽑은 것을 다시 넣는 경우를 빠뜨린다. 복원 추출이면 nPr·nCr이 아니라 nr이나 nHr을 써야 합니다.
- 같은 것이 섞인 경우. "AABC" 같이 같은 문자가 있으면 n!을 같은 것의 팩토리얼로 나눠야 해서(4! ÷ 2! = 12) 기본 nPr 공식이 맞지 않습니다. 이 계산기는 모두 서로 다른 대상만 가정합니다.
- 제한 조건이 붙은 문제. "특정 두 사람은 이웃하지 않게" 같은 조건은 전체에서 여사건을 빼거나 경우를 나눠 직접 설계해야 하며 계산기가 자동으로 처리하지 않습니다.
- n 입력 범위. 결과가 지나치게 길어지는 것을 막기 위해 n은 1000 이하의 정수만 받습니다. 결과가 매우 크면 자릿수도 함께 표시합니다.
결과를 활용하는 방법
- 확률을 구하려면 (원하는 경우의 수) ÷ (전체 경우의 수)로 나눕니다. 위 복권 예시처럼 nCr 값이 분모가 됩니다. 확률 개념 정리는 확률 기초 가이드를 참고하세요.
- 비밀번호 정책에서는 문자 종류 수 n과 길이 r로 nr을 구해 무차별 대입에 필요한 시도 횟수의 규모를 가늠할 수 있습니다.
- 팀 편성이나 배치 문제는 조합으로 후보 수를 구한 뒤, 각 후보 안에서 역할 배정이 필요하면 r!를 곱해 순열로 확장합니다.
- 조합 결과의 자릿수를 보면 모든 경우를 하나씩 확인하는 전수 검사가 현실적인지(예: 100C50은 30자리) 바로 판단됩니다.
자주 묻는 질문
r이 0이면 결과는 어떻게 되나요?
0개를 뽑는 경우의 수는 순열·조합 모두 1로 정의됩니다(아무것도 뽑지 않는 경우 1가지). r = n일 때 조합도 1이고, 순열은 n!입니다.
0!은 왜 1인가요?
nCn = n! ÷ (n! × 0!)이 "전부 뽑는 방법 1가지"가 되려면 0! = 1이어야 하고, 이 약속이 모든 공식을 일관되게 유지합니다.
n이 아주 큰 숫자면 계산이 느려지나요?
BigInt 연산으로 정확도는 보장되지만 숫자가 매우 길어질 수 있어 n은 1000 이하로 제한했습니다. 일반적인 입력은 즉시 계산됩니다.
중복순열·중복조합도 계산되나요?
네. 결과 영역에 중복순열(n^r)과 중복조합(nHr = (n+r−1)Cr)을 함께 표시합니다. 다만 같은 것이 섞인 순열(AABC 유형)은 지원하지 않습니다.
nCr과 nC(n−r)이 같은 이유는 무엇인가요?
r개를 뽑는 것은 남길 n−r개를 정하는 것과 같기 때문입니다. 예를 들어 10C3과 10C7은 모두 120입니다. 큰 r은 작은 쪽으로 바꿔 생각하면 손계산이 쉽습니다.
순열과 조합 중 무엇을 써야 할지 헷갈립니다.
뽑은 결과의 순서를 바꿨을 때 "다른 결과"로 센다면 순열, "같은 결과"로 센다면 조합입니다. 순위, 직책, 줄 서기, 자릿수가 있는 번호는 순열 쪽이고, 팀 구성, 위원회, 카드 패, 복권 번호 묶음은 조합 쪽입니다.
중복조합 nHr은 언제 쓰나요?
같은 종류를 여러 번 골라도 되고 순서는 보지 않을 때입니다. 5가지 맛 중에서 3스쿱을 고를 때 같은 맛을 반복해도 된다면 5H3 = 35가지입니다. 같은 맛 반복이 불가능하면 5C3 = 10가지로 줄어듭니다.
복권을 여러 장 사면 확률은 얼마나 늘어나나요?
서로 다른 번호 조합을 k줄 고르면 1등 확률은 k ÷ 8,145,060(6/45 기준)으로 정확히 k배가 됩니다. 8,145,060줄을 모두 사야 확실해진다는 뜻이기도 합니다. 이 계산은 수학적 확률일 뿐 당첨을 보장하는 방법은 없습니다.
결과가 너무 길어서 읽기 힘듭니다.
결과 영역의 "자릿수" 칩으로 규모를 먼저 파악하세요. 자릿수가 30을 넘으면 정확한 값보다 몇 자리 수인지가 더 의미 있는 경우가 많습니다. 정확한 값이 필요하면 "결과 복사"로 정수 문자열을 가져다 쓸 수 있습니다.