본문 바로가기

IT/Python

[백준] 11050번 이항 계수 1 [Python] - 조합

728x90

조합 $_{n}C_{r}$을 구하는 문제

더보기

문제

자연수 N과 정수 K가 주어졌을 때 이항 계수 \left(\begin{array}{c}N\\ K\end{array}\right)를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N K가 주어진다. $($1 ≤ N ≤ 10, 0 ≤ K  N$)$

출력

 \left(\begin{array}{c}N\\ K\end{array}\right)를 출력한다.

 

조합 \begin{align}\left(\begin{array}{c}N\\ K\end{array}\right) = \frac{N!}{K!(N - K)!} \end{align}

팩토리얼 \begin{align}N! =1*2*3* \cdots * N\end{align}

 

다 같은 내용이지만 3가지 방식으로 코드를 작성해봤습니다.

 

math.comb$()$ 조합의 수 구하는 함수

import sys
input = sys.stdin.readline
from math import comb

N, K = map(int, input().split())
print(comb(N,K))

 

math.factorial$()$ 팩토리얼을 구하는 함수

import sys
input = sys.stdin.readline
from math import factorial

N, K = map(int, input().split())
print(factorial(N) // (factorial(K) * factorial(N - K)))      # 조합의 경우의 수 구하기

 

팩토리얼을 구하는 함수 정의

import sys
input = sys.stdin.readline

def f(n):
    r = 1
    for i in range(1, n + 1):
        r *= i
    return r

 N, K = map(int, input().split())
print(f(N) // (f(K) * f(N - K)))

 

더보기

 \begin{align}\left(\begin{array}{c}5\\ 2\end{array}\right) = \frac{5!}{2! * 3!} = 10 \end{align}

예제 입력 1

5 2

예제 출력 1 

10