구하고 싶은 세는 법을 고르고, 종류의 수 n과 뽑는 개수 r(문자열을 다시 나열할 때는 문자열)을 입력하세요. 아래 수식은 입력란과 연동되어 있어서 숫자 부분을 직접 고쳐 써도 계산할 수 있습니다.
이 페이지에서 할 수 있는 것
- \(n\)종류에서 같은 것을 몇 번이든 뽑아도 된다고 하고 \(r\)개를 나열하는 중복순열 \({}_{n}\Pi_{r} = n^{r}\)을 계산할 수 있습니다(예: 0~9의 10가지 숫자로 만드는 4자리 비밀번호)
- 같은 것을 몇 번이든 뽑아도 된다고 하고 \(r\)개를 뽑는 중복조합 \({}_{n}\mathrm{H}_{r} = {}_{n+r-1}\mathrm{C}_{r}\)을 계산할 수 있습니다(예: 3종류의 주스 중에서 5병 사기)
- TOMATO처럼 같은 문자가 섞인 문자열을 다시 나열하는 방법의 수(같은 것이 있는 순열)도 문자열만 넣으면 계산할 수 있습니다(30글자까지)
- \(n^{r}\), \({}_{n}\mathrm{H}_{r}\), \({}_{n}\mathrm{P}_{r}\), \({}_{n}\mathrm{C}_{r}\) 중 무엇을 써야 할지 헷갈릴 때를 위해 ‘나열하나? 뽑기만 하나?’, ‘같은 것을 여러 번 뽑아도 되나?’로 정하는 판단 그림을 실었습니다
- 답이 수십 자리가 되어도 반올림하지 않고 모든 자리를 표시하며, 자릿수가 많을 때는 \(1.2345 \times 10^{18}\) 꼴의 어림값도 함께 보여 줍니다
- 동그라미와 칸막이를 이용한 중복조합의 그림 해설과 Excel·Google 스프레드시트·Python에 복사해 쓸 수 있는 수식도 이 페이지에 모아 두었습니다
이 계산은 어디에 쓰일까요?
0~9의 10가지 숫자로 같은 숫자를 몇 번 써도 되는 4자리 비밀번호를 만들면 \(10^{4} = 10{,}000\)가지입니다. 한 자리 늘 때마다 10배가 되어 6자리면 100만 가지가 됩니다.
영어 대문자, 소문자, 숫자의 62종류를 쓸 수 있는 비밀번호라면 8글자로 \(62^{8} = 218{,}340{,}105{,}584{,}896\)가지(약 218조 가지)입니다. ‘문자의 종류를 늘리는 것’과 ‘글자 수를 늘리는 것’이 각각 얼마나 효과가 있는지 중복순열의 공식으로 비교할 수 있습니다.
컴퓨터는 0과 1의 2종류만으로 정보를 나타냅니다. 이것을 8개 나열한 1바이트로 나타낼 수 있는 것은 \(2^{8} = 256\)가지이며, ‘1바이트는 256단계’라고 하는 이유가 바로 이것입니다.
사진의 색을 빨강, 초록, 파랑 각각 8비트로 나타내는 풀 컬러는 \(2^{24} = 16{,}777{,}216\)가지, 약 1677만 색이 됩니다. 화면의 색 수, 음질의 비트 수, IP 주소의 개수 등 디지털 기기의 ‘몇 가지를 나타낼 수 있는가’는 모두 중복순열로 계산합니다.
DNA는 A, T, G, C의 4종류의 염기로 이루어져 있고, 3개가 나란히 놓인 묶음(코돈)이 몸을 만드는 아미노산 1개를 나타냅니다. 같은 염기가 반복되어도 되므로 코돈의 종류는 \(4^{3} = 64\)가지입니다.
몸에서 쓰이는 아미노산은 20종류이므로, 2개씩이라면 \(4^{2} = 16\)가지밖에 되지 않아 부족합니다. 3개씩이면 생명 활동에 충분하다는 것을 중복순열로 확인할 수 있습니다.
5종류의 도넛 중에서 같은 종류를 몇 개 골라도 된다고 하고 10개들이 상자를 만드는 방법은, 순서를 따지지 않는 중복조합으로 \({}_{5}\mathrm{H}_{10} = {}_{14}\mathrm{C}_{10} = 1{,}001\)가지입니다.
‘어느 상품을 몇 개’라는 발주나 재고의 구성을 세는 것도 같은 꼴의 계산으로, 상품을 하나 늘리면 관리해야 할 경우가 얼마나 늘어나는지를 느낌이 아니라 숫자로 어림할 수 있습니다.
바둑판 모양의 길에서 오른쪽으로 3칸, 위로 2칸 가는 최단 경로의 수는 ‘오른쪽, 오른쪽, 오른쪽, 위, 위’라는 5개를 다시 나열하는 방법의 수와 같으므로 \(\dfrac{5!}{3!\,2!} = 10\)가지입니다. 같은 것이 있는 순열을 그대로 쓸 수 있습니다.
배송 경로의 후보 수나 회로 기판의 배선 패턴 수를 어림하는 데 바탕이 되는 계산으로, 격자가 커지면 선택지가 얼마나 폭발적으로 늘어나는지를 숫자로 보여 줍니다.
공식과 그림
용어·기호 해설
기호
| \(n\) | 엔 | 뽑는 대상이 되는 종류의 수입니다. (예: 3종류의 주스 중에서 뽑는다면 \(n = 3\), 0~9의 숫자를 쓴다면 \(n = 10\)) number(수)의 첫 글자로, 개수를 나타낼 때 자주 씁니다. 다만 같은 것이 있는 순열 \(\dfrac{n!}{p!\,q!\cdots}\)의 \(n\)만은 뜻이 달라서, 나열하는 것 전체의 개수를 가리킵니다(TOMATO라면 문자의 종류는 4가지이지만 \(n = 6\)). |
| \(r\) | 알 | 중복을 허락하여 뽑는(나열하는) 개수입니다. (예: 주스를 5병 산다면 \(r = 5\), 4자리 비밀번호라면 \(r = 4\)) 순열·조합의 기호 \({}_{n}\mathrm{P}_{r}\), \({}_{n}\mathrm{C}_{r}\)과 같은 위치에 놓는 문자입니다. |
| \(n!\) | n 팩토리얼 | \(n\)부터 \(1\)까지의 정수를 모두 곱한 수로, \(n\)개 모두를 한 줄로 나열하는 방법의 수를 나타냅니다. 단, \(0! = 1\)로 약속합니다. (예: \(4! = 4 \times 3 \times 2 \times 1 = 24\)) |
| \({}_{n}\Pi_{r}\) | n 파이 r | 중복순열입니다. \(n\)종류에서 중복을 허락하여 \(r\)개를 뽑아 순서대로 나열하는 방법의 수로, 값은 \(n^{r}\)입니다. \(\Pi\)는 곱을 나타내는 그리스 문자 파이의 대문자로, 영어 Product(곱)의 첫 글자 P에 해당합니다. |
| \({}_{n}\mathrm{H}_{r}\) | n H r | 중복조합입니다. \(n\)종류에서 중복을 허락하여 \(r\)개를 뽑는, 순서를 구별하지 않는 방법의 수로, 값은 \({}_{n+r-1}\mathrm{C}_{r}\)입니다. \(\mathrm{H}\)는 ‘같은 차수의 항을 모두 모은 것’을 뜻하는 homogeneous(동차)의 첫 글자에서 왔다고 알려져 있습니다. |
| \({}_{n}\mathrm{P}_{r}\) | n P r | 순열입니다. \(n\)개에서 \(r\)개를 뽑아 순서대로 나열하는 방법의 수로, 한 번 뽑은 것은 다시 뽑을 수 없습니다. P는 순열을 뜻하는 영어 permutation의 첫 글자입니다. |
| \({}_{n}\mathrm{C}_{r}\) | n C r | 조합입니다. \(n\)개에서 \(r\)개를 뽑는 방법의 수로, 한 번 뽑은 것은 다시 뽑을 수 없고 순서도 구별하지 않습니다. C는 조합을 뜻하는 영어 combination의 첫 글자입니다. |
| \(N\) | 대문자 엔 | 이 페이지에서는 같은 것이 있는 배열의 수를 나타내는 문자로 씁니다. number(수)의 첫 글자를 대문자로 쓴 것으로, 구하려는 총수를 나타낼 때 자주 쓰입니다. |
| \(p,\ q\) | 피, 큐 | 같은 것이 있는 순열에서 같은 것이 몇 개씩 있는지를 나타내는 문자입니다. (예: TOMATO라면 T가 \(p = 2\)개, O가 \(q = 2\)개, M이 1개, A가 1개) 3종류 이상이면 \(p,\ q,\ r,\ \dots\)로 이어 씁니다(이 \(r\)은 ‘뽑는 개수 \(r\)’과는 다릅니다). 모두 더하면 반드시 \(p + q + r + \cdots = n\)(나열하는 것 전체의 개수)이 됩니다. |
| \(\bigcirc\)와 \(|\) | 동그라미, 칸막이 | 중복조합을 셀 때 쓰는 기호입니다. ○는 ‘뽑은 1개’, \(|\)(칸막이)는 ‘종류의 경계’를 나타냅니다. ○○|○|○○라면 첫 번째 종류를 2개, 두 번째 종류를 1개, 세 번째 종류를 2개 뽑은 것이 됩니다. |
용어
| 경우의 수 | 일어날 수 있는 경우가 모두 몇 가지인지 센 수입니다. 순열, 조합, 중복순열, 중복조합은 모두 경우의 수를 효율적으로 세기 위한 도구입니다. |
| 중복 | 같은 것이 2번 이상 나타나는 것입니다. 이 단원에서는 ‘같은 것을 2번 이상 뽑아도 된다’는 뜻으로 쓰며, 교과서에서는 ‘중복을 허락하여’라고 표현합니다. |
| 중복순열 | \(n\)종류에서 같은 것을 몇 번이든 뽑아도 된다고 하고 \(r\)개를 뽑아 순서까지 구별해서 나열하는 방법입니다. 그 수는 \(n^{r}\)이고, 기호로는 \({}_{n}\Pi_{r}\)로 씁니다. |
| 중복조합 | \(n\)종류에서 같은 것을 몇 번이든 뽑아도 된다고 하고 \(r\)개를 뽑는, 순서를 구별하지 않는 방법입니다. 그 수는 \({}_{n}\mathrm{H}_{r} = {}_{n+r-1}\mathrm{C}_{r}\)입니다. |
| 같은 것이 있는 순열 | TOMATO처럼 같은 것이 섞인 \(n\)개를 모두 나열하는 방법입니다. 그 수는 \(\dfrac{n!}{p!\,q!\cdots}\)이며, 같은 것끼리 다시 나열하는 만큼 나누어 겹친 것을 없앱니다. |
| 순열 | \(n\)개에서 \(r\)개를 뽑아 순서를 구별해서 한 줄로 나열하는 방법입니다. 기호는 \({}_{n}\mathrm{P}_{r}\)이고, 한 번 뽑은 것은 다시 뽑을 수 없습니다. |
| 조합 | \(n\)개에서 \(r\)개를 뽑기만 하고 순서는 구별하지 않는 방법입니다. 기호는 \({}_{n}\mathrm{C}_{r}\)이고, 한 번 뽑은 것은 다시 뽑을 수 없습니다. |
| 계승 (팩토리얼) | \(n\)부터 \(1\)까지의 정수를 모두 곱하는 계산입니다. 기호는 \(n!\)이고 ‘n 팩토리얼’이라고 읽으며, \(n\)개 모두를 나열하는 방법의 수를 나타냅니다. |
| 칸막이 | 중복조합을 셀 때 종류의 경계를 나타내기 위해 놓는 기호 \(|\)입니다. \(n\)종류를 나누려면 \(n-1\)개가 필요하며, ○와 합친 \(n+r-1\)개의 자리에서 ○의 위치를 고르는 문제로 바꿀 수 있습니다. |
| 다항계수 | 같은 것이 있는 순열의 수 \(\dfrac{n!}{p!\,q!\cdots}\)의 다른 이름입니다. \((a+b+c)^{n}\)을 전개했을 때 각 항의 계수가 이 꼴이 되기 때문에 이렇게 부릅니다. |
| 수형도 | 경우의 수를 빠짐없이, 중복 없이 세기 위해 나뭇가지 모양의 그림으로 모든 경우를 적어 보는 방법입니다. 중복순열은 어느 가지에서나 같은 수의 가지가 뻗어 나가는 수형도에 해당합니다. |
| 최단 경로 | 바둑판 모양의 길에서 돌아가지 않고 목적지까지 가는 길입니다. 오른쪽으로 \(p\)칸, 위로 \(q\)칸 가는 최단 경로의 수는 같은 것이 있는 순열 \(\dfrac{(p+q)!}{p!\,q!}\)로 구할 수 있습니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘의미를 알고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.
막히면 이 표의 내용으로 돌아가 복습하는 것이 지름길입니다.
| 곱셈과 나눗셈(초등학교 3~4학년, 9~10세) |
|
| 거듭제곱과 지수(중학교 1학년~고등학교, 12~18세) |
|
| 경우의 수와 수형도(중학교 2학년, 13~14세) |
|
| 계승(고등학교 1학년, 15~16세) |
|
| 순열과 조합(고등학교 1학년, 15~16세) |
|
Excel로 계산하는 방법
| 종류의 수 n | 10 |
| 나열하는 개수 r | 4 |
| 중복순열 nΠr | =B1^B2 |
| 종류의 수 n | 3 |
| 뽑는 개수 r | 5 |
| ○와 칸막이를 합친 자리의 수 | =B1+B2-1 |
| 중복조합 nHr | =COMBIN(B3,B2) |
| 전체 글자 수 n(TOMATO) | 6 |
| T의 개수 | 2 |
| O의 개수 | 2 |
| M의 개수 | 1 |
| A의 개수 | 1 |
| 나열하는 방법의 수 N | =FACT(B1)/(FACT(B2)*FACT(B3)*FACT(B4)*FACT(B5)) |
‘^’는 거듭제곱 기호, FACT는 계승, COMBIN은 조합(nCr)을 계산하는 Excel 함수입니다.
첫 번째 표는 0~9의 10가지 숫자로 만드는 4자리 비밀번호로, B3에 10000이 표시됩니다.
두 번째 표는 3종류의 주스 중에서 5병을 사는 경우로, B3에 7(= 3 + 5 − 1), B4에 21이 표시됩니다.
세 번째 표는 TOMATO를 다시 나열하는 경우로, B6에 180이 표시됩니다. 같은 문자의 종류가 늘어나면 분모의 FACT를 늘려 곱하세요. =MULTINOMIAL(B2,B3,B4,B5)로도 같은 180을 구할 수 있습니다.
참고로 Excel의 숫자는 유효숫자 15자리까지이므로, 답이 16자리 이상이 되면 끝자리가 반올림됩니다.
Google 스프레드시트로 계산하는 방법
| 종류의 수 n | 10 |
| 나열하는 개수 r | 4 |
| 중복순열 nΠr | =B1^B2 |
| 종류의 수 n | 3 |
| 뽑는 개수 r | 5 |
| ○와 칸막이를 합친 자리의 수 | =B1+B2-1 |
| 중복조합 nHr | =COMBIN(B3,B2) |
| 전체 글자 수 n(TOMATO) | 6 |
| T의 개수 | 2 |
| O의 개수 | 2 |
| M의 개수 | 1 |
| A의 개수 | 1 |
| 나열하는 방법의 수 N | =FACT(B1)/(FACT(B2)*FACT(B3)*FACT(B4)*FACT(B5)) |
표를 통째로 복사해 A1 셀에 붙여 넣고, 숫자를 자신의 상황에 맞게 바꾸세요.
Python으로 계산하는 방법
import math
from collections import Counter
# 1) 중복순열(n종류에서 중복을 허락하여 r개를 뽑아 순서대로 나열)
kinds = 10 # 종류의 수 n(0~9의 10가지 숫자)
picks = 4 # 나열하는 개수 r(4자리)
repeated_permutations = kinds ** picks
# 2) 중복조합(n종류에서 중복을 허락하여 r개를 뽑기, 순서는 구별하지 않음)
juice_kinds = 3 # 종류의 수 n(3종류의 주스)
bottles = 5 # 뽑는 개수 r(5병)
repeated_combinations = math.comb(juice_kinds + bottles - 1, bottles)
# 3) 같은 것이 있는 순열(같은 문자가 섞인 문자열을 다시 나열)
word = "TOMATO"
letter_counts = Counter(word)
same_item_permutations = math.factorial(len(word))
for count in letter_counts.values():
same_item_permutations //= math.factorial(count)
print(f"중복순열({kinds}종류에서 {picks}개 나열): {repeated_permutations}가지")
print(f"중복조합({juice_kinds}종류에서 {bottles}개 뽑기): {repeated_combinations}가지")
print(f"{word} 다시 나열하기: {same_item_permutations}가지")
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
ₙΠᵣ = nʳ
{}_{n}\Pi_{r} = n^{r}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mmultiscripts>
<mi>Π</mi>
<mi>r</mi><none/>
<mprescripts/>
<mi>n</mi><none/>
</mmultiscripts>
<mo>=</mo>
<msup><mi>n</mi><mi>r</mi></msup>
</mrow>
</math>
n^r
n^r
repeatedPermutation := n^r;
repeated_permutation = n^r;
n^r
ₙHᵣ = ₙ₊ᵣ₋₁Cᵣ
{}_{n}\mathrm{H}_{r} = {}_{n+r-1}\mathrm{C}_{r} = \dfrac{(n+r-1)!}{r!\,(n-1)!}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mmultiscripts>
<mi>H</mi>
<mi>r</mi><none/>
<mprescripts/>
<mi>n</mi><none/>
</mmultiscripts>
<mo>=</mo>
<mmultiscripts>
<mi>C</mi>
<mi>r</mi><none/>
<mprescripts/>
<mrow><mi>n</mi><mo>+</mo><mi>r</mi><mo>−</mo><mn>1</mn></mrow><none/>
</mmultiscripts>
</mrow>
</math>
H(n, r) = C(n+r-1, r)
Binomial[n + r - 1, r]
nHr := binomial(n + r - 1, r);
nhr = nchoosek(n + r - 1, r);
H(n,r) = C(n+r−1, r) = (n+r−1)!/(r!(n−1)!)
N = n! ÷ (p! × q! × r! × ⋯)
N = \dfrac{n!}{p!\,q!\,r!\cdots}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<mfrac>
<mrow><mi>n</mi><mo>!</mo></mrow>
<mrow>
<mi>p</mi><mo>!</mo>
<mi>q</mi><mo>!</mo>
<mi>r</mi><mo>!</mo>
<mo>⋯</mo>
</mrow>
</mfrac>
</mrow>
</math>
N = (n!)/(p!q!r!cdots)
Multinomial[p, q, r]
N := factorial(n)/(factorial(p)*factorial(q)*factorial(r));
N = factorial(n)/(factorial(p)*factorial(q)*factorial(r));
N = n!/(p!q!r!⋯)
ChatGPT 에게 물어서 계산하는 방법
당신은 경우의 수(순열·조합) 계산 도우미입니다. 다음 3가지 계산을 Python 코드를 실제로 실행해서 하고, 실행 결과의 숫자만을 근거로 답하세요(암산이나 추측으로 답하지 마세요). 1. 0~9의 10가지 숫자로 4자리 비밀번호를 만들 때 몇 가지를 만들 수 있습니까? (같은 숫자를 몇 번 써도 됩니다.) 2. 3종류의 주스 중에서 같은 종류를 몇 병 골라도 된다고 하고 5병을 사는 방법은 몇 가지입니까? (고르는 순서는 구별하지 않고 종류별 병 수만 셉니다.) 3. TOMATO의 6글자를 다시 나열해서 만들 수 있는 서로 다른 문자열은 몇 가지입니까? 각각 중복순열, 중복조합, 같은 것이 있는 순열 중 무엇을 썼는지와 그 이유를 밝히고, 실행 결과의 숫자를 보여 주세요. Python에서는 math 모듈(math.comb, math.factorial)과 collections.Counter를 쓰세요.
사용법
-
1숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다