순열·조합 계산기

전체 개수(n)와 뽑는 개수(r)를 입력하면 순열(nPr)과 조합(nCr)의 경우의 수를 바로 계산합니다.

순열과 조합은 "몇 가지 방법이 있는가"를 세는 기본 도구입니다. 이 계산기는 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) 대칭성을 가집니다. 아래 표는 빌드 시 공식으로 계산한 값입니다.

r10Pr (순열)10Cr (조합)
011
11010
29045
3720120
45,040210
530,240252
6151,200210
7604,800120
81,814,40045
93,628,80010
103,628,8001

생활 속 경우의 수

상황계산경우의 수
10명 중 1·2·3등 (순서 있음)10P3720
10명 중 3명 선발 (순서 없음)10C3120
26개 알파벳 중 4개를 나열 (중복 없음)26P4358,800
8명 중 3명 한 줄로 세우기8P3336
30명 중 대표 3명 선출30C34,060
52장 카드 중 5장 받기 (순서 무시)52C52,598,960
45개 숫자 중 6개 고르기 (6/45 복권)45C68,145,060
숫자 4자리 비밀번호 (중복 허용)10^410,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!)실제 서로 다른 배열
AABC44! ÷ (2!)2412
BANANA66! ÷ (3! × 2!)72060
LETTER66! ÷ (2! × 2!)720180
MISSISSIPPI1111! ÷ (4! × 4! × 2!)39,916,80034,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개11.23e-5%
5개2340.0029%
4개11,1150.1365%
3개182,7802.24%
2개1,233,76515.15%
1개3,454,54242.41%
0개3,262,62340.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을 넘으므로 오류 안내가 나옵니다.

흔한 실수와 한계

결과를 활용하는 방법

자주 묻는 질문

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을 넘으면 정확한 값보다 몇 자리 수인지가 더 의미 있는 경우가 많습니다. 정확한 값이 필요하면 "결과 복사"로 정수 문자열을 가져다 쓸 수 있습니다.

함께 보면 좋은 도구