반응형
문제
자연수 과 정수 가 주어졌을 때 이항 계수 \(\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)
끝
반응형
'Algorithm > 백준' 카테고리의 다른 글
[Python] 백준 1436번 - 영화감독 숌 (1) | 2022.10.05 |
---|---|
[Python] 백준 1181번 - 단어 정렬 (0) | 2022.10.04 |
[Python] 백준 10989번 - 수 정렬하기 3 (1) | 2022.09.29 |
[Python] 백준 2231번 - 분해합 (1) | 2022.09.20 |
[Python]백준 2908번 - 상수 (0) | 2022.09.13 |
댓글