문제
자연수 𝑁\(N\)과 정수 𝐾\(K\)가 주어졌을 때 이항 계수 (𝑁𝐾)\(\binom{N}{K}\)를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 𝑁\(N\)과 𝐾\(K\)가 주어진다. (1 ≤ 𝑁\(N\) ≤ 10, 0 ≤ 𝐾\(K\) ≤ 𝑁\(N\))
출력
(𝑁𝐾)\(\binom{N}{K}\)를 출력한다.
아이디어
- 재귀를 사용해서 수학 공식에 맞게 팩토리얼을 계산하여 풀었다.
- fact 배열에 미리 값을 메모해놔서 같은 값을 두번 계산하지는 않게 최적화하였다.
제출 코드
def solution():
N, K = map(int, input().split())
fact = [1, 1, 2, 6]
def getFact(value):
if len(fact) - 1 >= value:
return fact[value]
else:
return getFact(value - 1) * value
print(int(getFact(N) / (getFact(K) * getFact(N - K))))
solution()
'Study > Algorithms' 카테고리의 다른 글
백준 30802: 웰컴 키트 (Python) (1) | 2024.06.07 |
---|---|
백준 11866: 요세푸스 문제 0 (Python) - 공식 없이 쉽게 풀이 (0) | 2024.06.04 |
백준 10866: 덱 (Python) (0) | 2024.05.31 |
백준 10816 숫자 카드 2 (Python) (0) | 2024.05.31 |
파이썬으로 알고리즘 풀 때 알아야 할 것들 (0) | 2024.05.31 |