경우의 수 문제에 쓰이는 조합(nCr), 순열(nPr), 팩토리얼(n!), 중복조합·중복순열을 한번에 계산합니다. 순서가 중요하면 순열, 무관하면 조합입니다.
💡 공식 정리
| 유형 | 공식 | 예시 |
|---|---|---|
| 조합 nCr | n! ÷ (r!(n−r)!) | 5명 중 2명 고르기 |
| 순열 nPr | n! ÷ (n−r)! | 5명 중 2명 줄세우기 |
| 중복조합 nHr | (n+r−1)Cr | 3종 과일 5개 (중복 허용) |
| 중복순열 | n^r | 4자리 PIN (0~9) |
| 팩토리얼 n! | 1×2×…×n | 5명 전원 줄세우기 |
조합과 순열의 차이
순열은 순서가 중요합니다. (A,B)와 (B,A)를 다르게 셉니다. 조합은 순서 무관이라 둘을 같은 것으로 봅니다. 따라서 같은 n, r에서 nPr = nCr × r!가 성립합니다.
자주 묻는 질문 (FAQ)
Q. 중복조합은 언제 쓰나요?
같은 항목을 여러 번 고를 수 있을 때입니다. 예: 3종 아이스크림 중 5스쿱 고르기(같은 맛 중복 가능) → 3H5 = 21가지.
Q. 큰 수를 넣으면 왜 Infinity가 나와요?
JavaScript의 숫자는 2^53까지만 정확히 표현합니다. 170! 이상은 Infinity가 됩니다. 단, nCr·nPr은 내부적으로 약분해 계산하므로 일반적인 크기에선 문제없습니다.
Q. 0! = 1인 이유?
수학적 관례이자 점화식 n! = n × (n−1)!이 일관되게 작동하도록 정의된 값입니다.