본문 바로가기

BOJ/다이나믹 프로그래밍

BOJ : 11051 이항계수2 (파이썬)

728x90

소스코드

import sys

n,m = map(int , sys.stdin.readline().split())

dp = [[0 for i in range(n+1)] for i in range(n+1)]

for i in range(n+1) :
    for j in range(n+1) :
        # 3C1 처리
        if j == 1 :
            dp[i][j] = i
        # 3C3 처리
        elif i == j :
            dp[i][j] = 1
        #3C0 처리
        elif j == 0 :
            dp[i][j] = 1
        else :
            dp[i][j] = dp[i-1][j-1] + dp[i-1][j]

print(dp[n][m] % 10007)

 

풀이

파스칼의 삼각형을 보고 규칙성을 찾아서 dp 테이블을 작성했습니다.

 

문제

https://www.acmicpc.net/problem/11051

 

11051번: 이항 계수 2

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net

 

728x90