조합 계산기

조합 계산기

조합 계산기에 오신 것을 환영합니다. 원소의 개수(n)와 선택 횟수(k 또는 r)를 입력하세요. 중복을 허용하려면 아래의 확인란을 선택한 다음 "계산" 버튼을 누르세요.

결과:
2026-10-11, 작성
Adam Narkiewicz

Adam은 경제학 박사 학위를 보유하고 있으며, 기술 관련 글을 작성하고 온라인 애플리케이션 개발을 총괄합니다. 다음에서 Adam을 만나볼 수 있습니다:
https://narkiewicz.info/
https://www.linkedin.com/in/adamnarkiewicz/

조합 공식

조합은 n개의 원소로 이루어진 집합에서 k개의 원소를 선택하는 방법을 나타냅니다. 이를 흔히 n의 k-조합이라고 하며, n의 k-순열과 혼동해서는 안 됩니다. 조합에서는 선택한 원소의 순서가 중요하지 않지만, 순열에서는 순서가 중요합니다.

n개의 원소로 이루어진 집합에서 k개의 원소를 선택하는 방법은 몇 가지일까요? 중복이 없는 n의 k-조합의 개수, 즉 선택한 원소를 다시 선택할 수 없도록 원소 집합에서 제외하는 경우의 기호는 C(n,k)입니다. 많은 자료에서는 Ckn 또는 (nk)와 같은 기호도 사용하며, 후자가 매우 널리 사용됩니다. 따라서

C(n,k)=Ckn=(nk)=n!k!(n−k)!

라고 쓸 수 있으며, 여기서 n!은 n의 팩토리얼을 의미합니다. 반면 n의 k-중복조합의 개수, 즉 선택한 원소를 다시 원소 집합에 넣어 다시 선택할 수 있도록 하는 경우의 기호는 E(n,k)이며, 때로는 ((nk))로도 표기합니다.

E(n,k)=((nk))=C(n+k−1,k)=(n+k−1)!k!(n−1)!

중복이 없는 조합과 순열은 다음 공식으로 서로 연결됩니다:

C(n,k)=P(n,k)k!.

순열의 개수를 k!로 나누는 것은 선택한 원소의 순서를 고려하기 위해서입니다. 이 순서는 조합에서는 중요하지 않지만 순열에서는 중요합니다. 선택한 원소의 순서가 중요한 경우에 관심이 있다면 순열 계산기를 이용해 보세요.

조합 예시

100명이 모인 자리에서 악수는 몇 번 이루어질까요?

마침 파티에 도착했다고 생각해 봅시다. 여러분을 포함해 100명의 손님이 있습니다. 모든 사람에게 악수로 인사를 나누려고 하다 보니, 모든 사람이 서로 인사를 한다면 전체적으로 몇 번의 악수가 이루어질지 궁금해집니다.

n = 100명의 사람이 있습니다. 이 그룹에서 서로 다른 두 사람의 조합을 몇 가지 만들 수 있을까요? 다시 말해, 100의 2-조합은 몇 가지일까요? 정답은

C(100,2)=(1002)=100!2!98!=100×992=4950

입니다. 악수는 총 4950번 이루어집니다. 여기서는 중복을 허용하지 않는 조합을 사용합니다. 자기 자신과 악수하는 경우는 있을 수 없기 때문입니다!

포커 패는 몇 가지나 있을까요?

조커를 제외한 게임을 생각해 봅시다. 즉, 카드 한 벌에는 52장의 카드가 있습니다. 여기서 중복 없이 카드 5장을 선택합니다(같은 카드를 두 번 뽑을 수 없기 때문입니다). 카드의 순서는 중요하지 않습니다. 따라서 중복이 없는 n의 k-조합을 사용할 수 있으며, 여기서는 k = 5, n = 52입니다:

(525)=2598960.

따라서 포커에서 만들 수 있는 서로 다른 패는 총 2,598,960가지입니다. 이를 이용하면 각 포커 족보가 나올 확률도 계산할 수 있습니다.

포카드가 나올 확률

포카드를 만들려면 먼저 같은 숫자(랭크)가 네 장인 카드를 선택해야 하므로 13가지 가능성이 있고, 그다음 다섯 번째 카드를 선택해야 하므로 48가지 가능성이 있습니다. 따라서 포카드에 해당하는 서로 다른 패는 (131)(481)=13×48=624가지입니다. 무작위로 카드를 뽑았을 때 이러한 패가 나올 확률은 6242598960=14165≈0.024%입니다.

풀하우스가 나올 확률

풀하우스가 나올 확률을 계산하는 것은 더 복잡합니다. 먼저 페어의 숫자를 선택해야 하므로 13가지 가능성이 있고, 그다음 트리플의 숫자를 선택해야 하므로 12가지 가능성이 있습니다. 트리플의 숫자는 페어의 숫자와 같을 수 없으므로 선택지 하나가 제외됩니다. 다음으로 서로 다른 슈트 조합을 고려해야 합니다. 페어에는 (42)가지 슈트 조합이 있고, 트리플에는 (43)가지 슈트 조합이 있습니다. 이제 이 수들을 곱하면 가능한 전체 경우의 수를 구할 수 있습니다:

(131)(42)(121)(43)=13×6×12×4=3744.

풀하우스에 해당하는 서로 다른 패는 3744가지이므로, 무작위로 카드를 뽑았을 때 풀하우스가 나올 확률은 37442598960=64165≈0.144%입니다. 즉, 포카드보다 풀하우스가 나올 확률이 6배 높습니다.

플러시가 나올 확률

플러시는 같은 슈트의 카드 5장으로 이루어진 족보입니다. 먼저 슈트를 선택해야 하므로 4가지 가능성이 있습니다. 그런 다음 해당 슈트의 카드 13장 중 5장을 선택합니다. 이 방법은 (135)가지가 있습니다. 따라서 플러시에 해당하는 서로 다른 패의 수는

(41)(135)=4×1287=5148

입니다. 무작위로 카드를 뽑았을 때 플러시가 나올 확률은 51482598960=3316660≈0.198%입니다.

주의하세요! 이 공식에는 스트레이트 플러시가 나올 가능성도 포함되어 있습니다. 스트레이트 플러시는 카드가 같은 슈트일 뿐만 아니라 연속된 순서로 이루어진 특별한 종류의 플러시입니다. 카드가 연속된 순서가 아닌 일반적인 플러시가 나올 확률을 계산하려면, 위에서 계산한 확률에서 스트레이트 플러시의 확률(아래 참조)을 빼야 합니다.

스트레이트가 나올 확률

여기서는 5장의 카드가 연속된 순서를 이루는 경우를 살펴봅니다. 즉, 각 카드는 앞의 카드보다 랭크가 1단계 높아야 하며, 카드의 슈트는 관계없습니다. 이러한 패의 수를 구하려면 먼저 가장 높은 카드를 정해야 합니다. 가장 높은 카드는 에이스, 킹, 퀸, 잭, 10, 9, 8, 7, 6, 5 중 하나가 될 수 있습니다(에이스는 5-4-3-2-에이스 순서에서 가장 낮은 카드로도 사용할 수 있습니다). 따라서 가장 높은 카드의 랭크는 10가지 중에서 선택할 수 있습니다. 가장 높은 카드를 선택하면 나머지 카드의 랭크는 모두 결정됩니다. 이제 슈트를 선택해야 합니다. 가능한 슈트는 4가지이며, 5장의 카드 각각에 대해 슈트를 하나씩 선택합니다. 따라서 4의 5-중복순열을 사용하며, 공식은 45입니다. 따라서 스트레이트에 해당하는 전체 패의 수는

(101)×45=10×1024=10240

입니다. 무작위로 카드를 뽑았을 때 스트레이트가 나올 확률은 102402598960=12832487 ≈0.394%입니다.

주의하세요! 이 공식에는 스트레이트 플러시가 나올 가능성도 포함되어 있습니다. 스트레이트 플러시는 카드가 연속된 순서일 뿐만 아니라 모두 같은 슈트인 특별한 스트레이트입니다. 카드가 같은 슈트가 아닌 일반적인 스트레이트가 나올 확률을 계산하려면, 위에서 계산한 확률에서 스트레이트 플러시의 확률(아래 참조)을 빼야 합니다.

스트레이트 플러시가 나올 확률

스트레이트 플러시는 포커에서 가장 높은 가치가 있는 동시에 가장 희귀한 족보 중 하나입니다. 이 족보에서는 스트레이트와 마찬가지로 카드가 연속된 순서로 이루어져 있으며, 플러시와 마찬가지로 모두 같은 슈트여야 합니다. 이러한 패의 수를 계산하려면 먼저 가장 높은 카드를 선택해야 합니다. 일반적인 스트레이트와 마찬가지로 10가지 방법이 있습니다. 카드의 랭크가 정해지면 슈트를 선택해야 하며, 4가지 방법이 있습니다. 최종 공식은

(101)(41)=10×4=40

입니다. 이러한 패는 40가지밖에 없으므로, 무작위로 카드를 뽑았을 때 스트레이트 플러시가 나올 확률은 402598960=164974≈0.00154%입니다.

주의하세요! 이 공식에는 로열 플러시가 나올 가능성도 포함되어 있습니다(아래 참조). 로열 플러시가 아닌 스트레이트 플러시가 나올 확률을 계산하려면, 위에서 계산한 확률에서 로열 플러시의 확률을 빼야 합니다.

로열 플러시가 나올 확률

로열 플러시가 나올 확률은 스트레이트 플러시가 나올 확률보다도 낮습니다. 로열 플러시는 에이스가 가장 높은 카드인 스트레이트 플러시이기 때문입니다. 따라서 로열 플러시를 이루는 카드의 랭크는 항상 에이스, 킹, 퀸, 잭, 10으로 동일합니다. 달라질 수 있는 것은 카드의 슈트뿐입니다. 슈트는 4가지뿐이므로 로열 플러시에 해당하는 패도 4가지뿐입니다. 로열 플러시가 나올 확률은 42598960=1649740≈0.000154%입니다. 이는 스트레이트 플러시가 나올 확률의 10분의 1입니다.

트리플이 나올 확률

트리플을 만들려면 먼저 세 카드의 랭크를 선택해야 합니다. 선택할 수 있는 방법은 13가지입니다. 그런 다음 나머지 12개의 랭크 중에서 다른 두 카드의 랭크를 선택해야 합니다. 이때 페어가 나오지 않도록 해야 합니다(그렇지 않으면 트리플이 아니라 풀하우스가 되기 때문입니다). 따라서 중복이 없는 12의 2-조합 ((122))를 사용합니다. 마지막으로 슈트를 선택해야 합니다. 먼저 4개의 슈트 중에서 3개를 선택하므로 (43)입니다. 그런 다음 나머지 두 카드의 슈트를 선택합니다. 두 카드는 서로 다른 랭크이므로 4의 2-중복순열을 사용하며, 그 값은 42입니다. 전체적으로 공식은

(131)(122)(43)42=13×66×4×16=54912

가 됩니다. 트리플이 나올 확률은 549122598960=884165 ≈2.11%입니다.

투 페어가 나올 확률

투 페어가 나오는 방법은 몇 가지나 될까요? 먼저 페어를 이루는 랭크를 선택해야 하므로 (132)를 사용합니다. 두 번째로 다섯 번째 카드의 랭크를 선택해야 하므로 (111)을 사용합니다. 세 번째로 각 페어를 이루는 카드의 슈트를 선택해야 합니다. 각 페어의 카드들은 서로 다른 슈트여야 하므로, 낮은 랭크의 페어에는 슈트를 선택하는 방법이 (42)가지이고, 높은 랭크의 페어에도 (42)가지가 있습니다. 마지막으로 다섯 번째 카드의 슈트를 선택해야 하며, 선택할 수 있는 방법은 4가지입니다. 따라서 이 모든 요소를 곱하면

(132)(111)(42)(42)(41)=78×11×6×6×4=123552

를 얻습니다. 투 페어가 나올 확률은 1235522598960=1984165 ≈4.75%입니다.

원 페어가 나올 확률

마지막으로 원 페어가 나올 확률은 다음과 같이 계산할 수 있습니다. 1) 페어의 랭크를 선택합니다: (131). 2) 나머지 카드 3장의 랭크를 선택합니다: (123). 3) 페어를 이루는 카드의 슈트를 선택합니다: (42). 4) 나머지 카드 3장의 슈트를 선택합니다: 43. 나머지 세 카드의 서로 다른 랭크를 선택할 때는 조합을 사용하면서(따라서 (123)), 슈트를 선택할 때는 순열을 사용하는 것(따라서 43)이 의아할 수 있습니다. 랭크를 선택할 때는 손에 든 카드에서 해당 랭크의 카드들을 어떤 순서로 배치하는지는 중요하지 않기 때문에 조합을 사용해야 합니다. 손에 든 카드의 순서를 바꾸더라도 여전히 같은 포커 패이기 때문입니다. 그러나 이 세 카드는 서로 다른 랭크이므로 높은 랭크부터 낮은 랭크까지 자연스러운 순서가 있습니다. 카드의 슈트를 선택할 때는 이 자연스러운 순서를 기준으로 각 카드를 구분할 수 있습니다. 먼저 가장 높은 랭크의 카드의 슈트를 선택합니다. 그런 다음 중간 랭크의 카드의 슈트를 선택하고, 마지막으로 가장 낮은 랭크의 카드의 슈트를 선택합니다. 각 선택에는 4가지 경우의 수가 있으므로 4×4×4=43가지 가능성이 있습니다.

따라서 원 페어에 해당하는 전체 패의 수는

(131)(123)(42)43=13×220×6×64=1098240

이고 원 페어가 나올 확률은 10982402598960=352833 ≈42.3%입니다. 이 결과는 직접 실험을 통해 확인할 수도 있습니다. 카드 한 벌을 잘 섞은 다음 카드 5장을 뽑아 보세요. 원 페어가 나왔나요? 결과를 기록해 두세요. 이 과정을 여러 번 반복해 보세요. 전체 시도 중 절반보다 약간 적은 횟수로 원 페어가 나올 것입니다.

복권에 당첨될 확률은 얼마나 될까요?

많은 국가에서는 더 많은 수의 공이 들어 있는 추첨에서 숫자가 적힌 공 몇 개를 뽑는 방식의 복권을 운영하고 있습니다. 선택한 숫자가 당첨 번호와 일치하면 당첨되며, 당첨금은 매우 높은 경우가 많습니다. 한국에서 가장 대표적인 복권은 로또 6/45입니다. 이 복권에서는 1부터 45까지의 숫자 중 중복 없이 6개의 숫자를 선택합니다. 가능한 모든 조합의 수는

(456)=8145060

입니다. 따라서 로또 6/45에서 번호를 선택할 수 있는 방법은 8,145,060가지입니다. 다시 말해, 당첨을 확실히 보장하려면 8,145,060장의 복권을 구매해야 합니다. 복권을 한 장만 구매한다면 당첨 확률은 8,145,060분의 1, 즉 약 0.000012%입니다.

파티에 간식은 몇 가지 방법으로 가져갈 수 있을까요?

이 예에서는 친구 집에서 열리는 파티에 간다고 생각해 봅시다. 여러분은 간식을 가져와 함께 준비해 달라는 부탁을 받았습니다. 간식은 감자칩, 쿠키, 크래커 세 종류가 있습니다. 간식 봉지 5개를 사려고 합니다. 가능한 조합은 몇 가지일까요?

먼저 선택할 수 있는 원소가 3개이므로 n = 3입니다. 둘째, 간식을 어떤 순서로 배열하는지는 중요하지 않습니다. 셋째, 같은 종류의 간식을 하나 이상 구매할 수 있습니다. 따라서 3의 5-중복조합을 사용해야 합니다. 공식은

E(3,5)=(3+5−15)=21

입니다. 파티에 가져갈 간식을 선택하는 방법은 21가지입니다. 제대로 계산했는지 확인하기 위해 가능한 모든 조합을 나열해 보겠습니다(간단하게 하기 위해 간식의 이름을 A, B, C로 표시하겠습니다).

AAAAA
AAAAB
AAABB
AABBB
ABBBB
BBBBB
CAAAA
CAAAB
CAABB
CABBB
CBBBB
CCAAA
CCAAB
CCABB
CCBBB
CCCAA
CCCAB
CCCBB
CCCCA
CCCCB
CCCCC

조합 공식 설명

중복이 없는 n의 k-조합

중복이 없는 n의 k-조합의 공식은

C(n,k)=n!k!(n−k)!

입니다. 이 공식은 "n개 중 k개를 선택하는" 또는 "개 중 r개를 선택하는" 공식이라고도 합니다.

이 공식이 정말 올바른 공식인지 확인하기 위해, 1부터 n까지의 숫자 중 k개의 숫자를 선택하는 과정을 살펴보겠습니다. 먼저 선택한 숫자들을 길이가 k인 수열로 배열합니다. 수열의 첫 번째 자리에는 n개의 숫자 중 어떤 숫자든 올 수 있습니다. 첫 번째 자리에 놓인 숫자를 선택지에서 제외하면, 두 번째 자리에는 n − 1개의 숫자 중에서 선택할 수 있습니다. 이 숫자 역시 선택지에서 제외하면 세 번째 자리에는 n − 2개의 숫자 중에서 선택할 수 있습니다. 이런 방식으로 숫자를 계속 선택하여 길이가 k인 수열을 완성합니다. 이러한 수열의 전체 개수(이는 중복이 없는 n의 k-순열의 개수와 같습니다)를 구하려면 각 단계에서 선택할 수 있는 경우의 수를 모두 곱해야 합니다:

P(n,k)=n×(n−1)×(n−2)×⋯×(n−k+1)⏟k개의 인수.

하지만 이 곱셈은 단순히 팩토리얼을 구성하는 가장 큰 k개의 인수를 곱한 것입니다. 따라서 이를

P(n,k)=n!(n−k)!

와 같이 다시 나타낼 수 있습니다. 이때 분모의 팩토리얼이 분자의 가장 작은 n − k개의 인수를 약분하므로, 앞에서 제시한 공식과 같은 식이 남습니다.

하지만 여기서 끝이 아닙니다. 지금까지 계산한 것은 조합이 아니라 순열의 개수이기 때문입니다. 순열에서는 원소의 순서가 중요합니다. 앞에서 수열을 만들 때도 순서를 고려하여 첫 번째 자리에 놓을 숫자를 선택한 다음 두 번째, 세 번째 자리의 숫자를 차례로 선택했습니다. 이제 같은 숫자로 이루어진 모든 수열을 하나의 조합으로 취급하려고 합니다. 그렇다면 서로 다른 k개의 숫자를 사용하여 만들 수 있는 수열은 몇 가지일까요? 답은 간단합니다. k!입니다. 즉, 조합 하나당 k!개의 순열이 존재합니다. 따라서 조합의 개수를 구하려면 순열의 개수를 k!로 나누어야 합니다:

C(n,k)=P(n,k)k!=n!k!(n−k)!.

n의 k-중복조합

n의 k-중복조합의 공식은 어떻게 구할 수 있을까요? n개의 원소 각각은 0번에서 k번까지 선택할 수 있습니다. 따라서 1부터 n까지 번호가 매겨진 n개의 칸이 있다고 생각해 봅시다. 각 칸에는 최대 k개의 공을 넣을 수 있으며, 모든 칸에 들어 있는 공의 총 개수는 k개입니다. 여기서 각 칸은 하나의 원소를 나타내고, 해당 칸에 들어 있는 공의 개수는 그 칸이 나타내는 원소를 몇 번 선택하는지를 나타냅니다.

각 칸에 공이 몇 개씩 들어 있는지를 숫자로 이루어진 수열로 어떻게 나타낼 수 있을까요? 다음과 같은 방식으로 n − 1개의 숫자로 이루어진 수열을 만들 수 있습니다. 이 수열의 i 번째 숫자는 첫 번째 칸부터 i 번째 칸까지 공과 칸을 합한 개수를 나타냅니다. 예를 들어, 첫 번째 숫자는 첫 번째 칸에 들어 있는 공의 개수에 1을 더한 값이므로 1부터 k + 1까지의 값이 될 수 있습니다. 두 번째 숫자는 처음 두 칸에 들어 있는 공의 개수에 2를 더한 값이므로 2부터 k + 2까지의 값이 될 수 있지만, 첫 번째 숫자보다 커야 합니다. 세 번째 숫자는 처음 세 칸에 들어 있는 공의 개수에 3을 더한 값이므로 3부터 k + 3까지의 값이 될 수 있으며, 두 번째 숫자보다 커야 합니다. 이런 식으로 계속됩니다. 마지막 숫자는 n − 1에 마지막 칸을 제외한 모든 칸에 들어 있는 공의 총 개수를 더한 값이라는 것을 쉽게 알 수 있습니다. 모든 공이 마지막 칸에 들어 있다면 그 값은 n − 1로 가장 작아지고, 마지막 칸에 공이 하나도 없다면 n − 1 + k로 가장 커집니다.

이제 관점을 바꿔 봅시다. 1부터 n − 1 + k까지의 숫자로 이루어진 집합이 있습니다. 이 집합에서 중복 없이 n − 1개의 숫자를 선택합니다. 선택한 숫자들을 작은 수부터 큰 수의 순서로 배열하면, 각 칸에 몇 개의 공이 들어가는지 알 수 있습니다. n − 1 + k개의 숫자로 이루어진 더 큰 집합에서 n − 1개의 숫자를 선택하는 각각의 방법은 n개의 칸에 k개의 공을 분배하는 하나의 방법과 정확히 대응합니다. 그렇다면 n − 1 + k개의 숫자로 이루어진 집합에서 중복 없이 n − 1개의 숫자를 선택하는 방법은 몇 가지일까요?

C(n+k−1,n−1)=(n+k−1)!(n−1)!k!

입니다. 이것은 우리가 찾고 있는 공식과 거의 같습니다. 마지막으로, 분모에 있는 팩토리얼의 순서를 바꿀 수 있다는 점에 주목하면 됩니다. 즉,

C(n+k−1,n−1)=(n+k−1)!(n−1)!k!=(n+k−1)!k!(n−1)!=C(n+k−1,k)

그리고 최종적으로

E(n,k)=C(n+k−1,k)=(n+k−1)!k!(n−1)!

가 됩니다.

파스칼의 삼각형과 이항 계수

이항식은 두 개의 항을 포함하는 식으로, 예를 들어 x+y가 있습니다. 이항 계수는 x+y를 음이 아닌 정수의 거듭제곱으로 전개했을 때 x와 y의 항에 붙는 계수입니다. 예를 들어, (x+y)0=1, (x+y)1=x+y, (x+y)2=x2+2xy+y2, (x+y)3=x3+3x2y+3xy2+y3에서 이항 계수는 각각 1, 1-1, 1-2-1, 1-3-3-1입니다. 이항 계수는 n의 k-조합과 관련이 있다는 것이 밝혀졌습니다. (x+y)n를 전개하면, xkyn−k 옆에 있는 계수는 (nk)입니다. 예를 들어, (x+y)3=x3+3x2y+3xy2+y3에서 x2y 옆에 있는 계수는 (32)=3입니다. 이 사실은 일반적으로 다음 공식으로 나타낼 수 있습니다:

(x+y)n=∑k=0n(nk)xkyn−k.

또한 이항 계수는 흥미로운 패턴을 이루는데, 삼각형 모양으로 배열할 수 있으며 이를 흔히 파스칼의 삼각형이라고 합니다.

n
01
111
2121
31331
414641
515101051
6⋯

파스칼의 삼각형에서 흥미로운 점은 이전 행에서 서로 이웃한 원소를 더하면 다음 행을 만들 수 있다는 것입니다. 예를 들어, n = 4인 행의 6은 바로 위 행의 3 + 3에서 나옵니다. 마찬가지로 n = 5인 행의 10은 그 위 행의 4 + 6에서 나옵니다. 이러한 사실은 다음 공식으로 나타낼 수 있습니다:

(nk)=(n−1k−1)+(n−1k).

이항식의 방정식과 항등식

이항 계수와 관련된 가장 잘 알려진 항등식 몇 가지를 살펴보겠습니다.

1)
(nk)=(nn−k)
2)
(nk)=nk(n−1k−1)
3)
(nk)=nn−k(n−1k)
4)
(nk)=n−k+1k(nk−1)
5)
(nk)=(n−1k−1)+(n−1k)
6)
∑k=0n(nk)=2n
7)
∑k=0n(nk)2=(2nn)
8)
∑k=0n(nk)xk=(1+x)n
9)
∑k=0n(nk)xkyn−k=(x+y)n

Python에서 n개 중 k개를 선택하는 방법

Python 프로그래밍 언어에서 중복 없이 n의 k-조합의 개수를 구하려면 math 모듈의 comb 함수를 사용합니다.

from math import comb def nCk(n, k): return comb(n, k)

n의 k-중복조합의 개수를 구하려면, 중복조합과 중복이 없는 조합의 관계를 나타내는 공식을 사용합니다:

from math import comb def nEk(n, k): return comb(n + k - 1, k)

중복이 없는 모든 n의 k-조합을 표시하려면, 이를 수행하는 내장 함수도 있습니다:

from itertools, import combinations def list_combs(n, k): for c in combinations(range(1, n+1), k): print(c)

모든 n의 k-중복조합을 표시하려면 다음을 사용합니다:

from itertools import combinations_with_replacement def list_combs_wr(n, k): for c in combinations_with_replacement(range(1, n+1), k): print(c)

중복이 없는 n의 k-조합의 개수를 구하는 함수를 직접 작성하고 싶다면 다음 예시를 사용할 수 있습니다:

from math import factorial def nCk(n, k): return int(factorial(n) / (factorial(k) * factorial(n-k)))

n의 k-중복조합의 개수를 계산하는 함수는 다음과 같이 작성할 수 있습니다:

from math import factorial def nEk(n, k): return int(factorial(n + k - 1) / (factorial(k) * factorial(n-1)))

조합 계산기 사용 방법

조합 계산기를 사용하면 중복이 있는 경우와 중복이 없는 경우의 n의 k-조합을 계산할 수 있습니다. 계산하려면 먼저 사용 가능한 원소의 개수를 n으로 표시된 입력란에 입력합니다. 그런 다음 k 또는 r로 표시된 입력란에 선택할 원소의 개수를 입력합니다. 중복조합을 계산하려면 아래의 체크박스를 선택합니다. 마지막으로 "계산" 버튼을 누르면 결과가 아래에 표시됩니다.

계산기는 매우 큰 수가 포함된 계산에 특히 적합합니다. 예를 들어 n = 1000000, k = 1000과 같은 값을 입력해도 문제없이 결과를 계산할 수 있습니다. 큰 수를 계산할 경우 계산기는 결과를 두 가지 형태로 보여 줍니다. 첫 번째 줄에는 과학적 기수법으로 근사값을 표시하고, 두 번째 줄에는 정확한 값을 표시합니다.

사전에 정해진 제한은 없으며, 계산기는 n과 k의 크기에 관계없이 계산을 시도합니다. 계산에 성공할 수 있는지는 사용 중인 시스템의 설정에 따라 달라집니다. 데스크톱 컴퓨터에서 최신 버전의 Chrome 브라우저를 사용하는 경우 n = 8000000000, k = 10000000과 같은 입력값도 쉽게 계산할 수 있습니다(소행성 충돌로 지구가 파괴된 후, 거대한 우주선에서 살아남아 생활할 생존자 10,000,000명을 선택하는 방법은 몇 가지일까요?). 그러나 다른 시스템 환경, 특히 모바일 기기에서는 이처럼 큰 수를 계산하는 데 어려움을 겪을 수 있습니다.

계산기에는 그 밖에도 여러 가지 기능이 있습니다. 다음과 같은 기능을 사용할 수 있습니다:

  1. 결과를 표시할 진법을 선택할 수 있습니다. 2부터 36까지의 정수 중에서 원하는 값을 사용할 수 있습니다. 기본 진법은 10진법이며, 기본적으로 결과는 10진법으로 표시됩니다. 다른 진법을 선택하면 결과를 표시할 때만 해당 진법이 사용됩니다. 입력값은 항상 10진법을 기준으로 해석됩니다.
  2. n과 k 입력란을 "지우기" 버튼을 눌러 비울 수 있습니다. 그런 다음 원하는 값을 다시 입력하면 됩니다.
  3. 결과를 클립보드에 복사할 수 있습니다. 이 기능(및 다음에 나오는 모든 기능)을 사용하려면 "결과" 필드 위에 있는 해당 버튼을 누릅니다.
  4. 결과를 다운로드하여 기기에 텍스트 파일로 저장할 수 있습니다.
  5. 결과를 인쇄할 수 있습니다.
  6. 결과 링크를 클립보드에 복사할 수 있습니다.
  7. 결과를 지울 수 있습니다.

이 콘텐츠 인용 또는 포함

이 웹사이트를 출처로 명시하는 경우 상업적 용도를 포함하여 무료로 사용할 수 있습니다. 학술적인 글에서 인용하는 경우 다음 인용 형식을 사용할 수 있습니다.

Narkiewicz A. 《조합 계산기》. https://minesweeper.us/지뢰찾기/조합-계산기/. 에 확인함.

이 웹사이트를 인터넷에서 인용하려면 메인 URL(https://minesweeper.us/지뢰찾기/조합-계산기/)을 링크하거나, 특정 결과를 링크하려는 경우 "링크를 클립보드에 복사" 버튼을 사용하면 됩니다.

또한 iframe 요소를 사용하여 이 페이지를 웹사이트에 포함할 수 있습니다. 페이지에 계산기만 표시하고 나머지 콘텐츠(메뉴, 문서 등)는 모두 숨기려면 다음 URL을 src 속성에 사용할 수 있습니다. https://minesweeper.us지뢰찾기/조합-계산기/?iframe=1.

웹사이트에 이 페이지를 인용하고 클릭할 수 있는 링크를 추가하여 출처를 밝혀 주세요. 또한 contact@simiade.com으로 이메일을 보내 웹사이트에 저희 앱을 포함했다는 사실을 알려주시면 좋습니다. 그러면 저희 앱에 변경 사항이 발생하여 웹마스터가 웹사이트에서 앱을 표시하는 방식을 업데이트해야 하는 경우 알려드릴 수 있습니다.

참고 자료

Charalambides, Charalambos A., Enumerative Combinatorics, CRC Press, 2002.

문의하기

질문, 의견 또는 제안 사항이 있으시면 여기에 피드백을 남겨주세요.

또는 우편으로 문의하실 수 있습니다:

Simiade
Adam Narkiewicz
Plac Bankowy 2
00-095 Warszawa
폴란드
+48 728235409
contact@simiade.com
https://simiade.com/ko/

음이 아닌 정수를 입력해야 합니다. 구분 기호는 사용하지 마세요. 숫자만 입력할 수 있습니다.

진법은 2에서 36 사이의 정수여야 합니다.

n은 k보다 작을 수 없습니다.

개의 원소로 이루어진 집합에서 길이가 인 조합을 계산하는 중입니다. 잠시만 기다려 주세요…

(중복 있음)

결과를 표시하는 중입니다…

오류가 발생했습니다:

(진법)

n은 0이 될 수 없습니다.

조합 계산기 | 큰 수 |

C(,)

E(,)

현재 중복이 허용되지 않습니다

현재 중복이 허용됩니다

n=, k=인 조합

진법

중복 있음

피드백이 전송되었습니다. 감사합니다!