Hanbit the Developer
[Python] 백준 11051번: 이항 계수 2 본문
https://www.acmicpc.net/problem/11051
import sys
input = sys.stdin.readline
sys.setrecursionlimit(100000)
DIV = 10007
NOT_DEFINED = -1
def get_combination(n, k):
if k == 0 or k == n:
return 1
if dp[n][k] == NOT_DEFINED:
dp[n][k] = (get_combination(n-1, k-1) + get_combination(n-1, k)) % DIV
return dp[n][k]
if __name__ == '__main__':
N, K = map(int, input().split())
dp = [[NOT_DEFINED]*1001 for _ in range(1001)]
dp[0][0] = 1
print(get_combination(N, K))
nCr = (n-1)C(r-1) + (n-1)Cr
위 식을 이용하여 2차원 DP로 풀었다.
k가 0이거나 n과 같을 때 1이 나오는 것과, dp[0][0] = 1인 것을 신경써주면 바로 풀린다.
'Algorithm > 백준' 카테고리의 다른 글
[C] 백준 2750번: 수 정렬하기(삽입 정렬) (0) | 2021.10.20 |
---|---|
[C] 백준 2750번: 수 정렬하기(선택 정렬) (0) | 2021.10.20 |
[Python] 백준 2042번: 구간 합 구하기(using fenwick-tree) (0) | 2021.10.08 |
[Python] 백준 14939번: 불 끄기 (0) | 2021.10.06 |
[백준] 2981번: 검문 (0) | 2021.10.04 |