Algorithm (PS)

[백준] 2225 합분해 in Python <점화식을 테이블을 그리면 쉽게 구하는 DP문제>

minjiwoo 2022. 2. 5. 12:33
728x90

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

 

2225번: 합분해

첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.

www.acmicpc.net

 

짜잔 이렇게 dp 테이블을 그려서 

dp[i][j] = dp[i-1][j] + dp[i][j-1] 라는 점화식을 도출해내면 끝이다 

단 i -1 > 0, j -1> 0 이어야 하므로 i, j 는 각각 2이상이어야 한다 !! 

그러기 위해서는 dp[?][1] 은 n (자기자신) 값으로 초기화 해주어야 하고 

dp[1][?] 는 1로 초기화해주어야 한다 

 

# 2225 합분해

n, k = map(int, input().split())
dp = [[0] * 201 for _ in range(201)]
for i in range(1, 201):
    dp[1][i] = 1
    dp[i][1] = i

for i in range(2, 201):
    for j in range(2, 201):
        dp[i][j] = dp[i-1][j] + dp[i][j-1]


print(dp[k][n]%1000000000)
728x90