본문 바로가기
Algorithm/백준

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

by 애기 개발자 2022. 10. 1.
반응형

문제

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

입력

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

출력

 를 출력한다.

 

 


그렇다. 이걸 검색해본 사람들은 이항 계수가 뭔지 몰라서 온 사람일 확률이 99%라고 생각한다.

 

우선 이항 계수는

 

 

출처: 나무위키

위와 같다.

 

나도 몰라서 검색했다.

 

결국 우리가 구해야할 값은

 

$$n! \over r!(n-r)! $$

이걸 구하면 된다.

 


우선 혹시 정말 수학과 거리가 먼 분들은 $ n! $도 모를 수도 있다.

$n! = n * (n-1) * (n-2) * ... * 1$ 이다.

이를 구현하는 방법으로는

 

1. math 라이브러리의 factorial 함수

import math

print(math.factorial(5)) #120

math.factorial(n) 을 해주면 알아서 팩토리얼된 값을 리턴해준다.

 

2. 단순 반복문

def facto(n):
  result = 1
  for i in range(1, n+1):
    result *= i
  return result

print(facto(5)) #120

 

3. 재귀함수

def facto(n):
  return n * facto(n-1) if n > 1 else 1

print(facto(5)) #120

위의 세 가지 방법이 있으니

 

혹시 라이브러리를 사용하지 못하게 될 경우를 대비해 알아두자.

 

그럼 이제 팩토리얼을 쓰는 법은 알았으니 문제는 쉽다.

 

저 방법을 그대로 대입만 하면 된다.

 

import math
n, k = map(int, input().split())
r = int(math.factorial(n)/(math.factorial(k)*math.factorial(n-k)))
print(r)

반응형

댓글