반응형
https://www.acmicpc.net/problem/2225
◎ 문제풀이
합해야 하는 K가 정해져 있어 어려운 문제였다.
5가 되는 경우는 6가지가 있다.
0에 +5를 하는 경우
1에 +4를 하는 경우
2에 +3을 하는 경우
3에 +2를 하는 경우
4에 +1을 하는 경우
5에 +0을 하는 경우
k는 3이므로,
+0,+1,+2,+3,+4,+5은 2개의 합으로 구성되어야 한다. 이를 점화식으로 표현하면 아래와 같다.
dp[5][3] = dp[0][2] + dp[1][2] + dp[2][2] + dp[3][2] + dp[4][2] + dp[5][2]
dp[n][k] = dp[0][k-1] + dp[1][k-1] + dp[2][k-1] + ... + dp[n-1][k-1] + dp[n][k-1]
여기서
dp[n-1][k-1] = dp[0][k-1] + dp[1][k-1] + dp[2][k-1] + ... + dp[n-1][k-1] 이므로
dp[n][k] = dp[n-1][k-1] + dp[n][k-1]
dp[n][k] 를 바텀업 방식으로 하나씩 채워나가며 답을 구하면된다.
◎코드
n,k = map(int,input().split())
dp = [[0]*(k+1) for _ in range(n+1)]
dp[0][0] = 1
for i in range(0,n+1):
for j in range(1,k+1):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
print(dp[n][k]%1000000000)
반응형
'문제풀이 > DP' 카테고리의 다른 글
[PS] BOJ2156 포도주 시식 ( DP ) with JAVA,Python (0) | 2023.07.24 |
---|---|
[PS] BOJ1149 RGB거리 ( DP ) With Java (0) | 2023.07.10 |
[PS]BOJ1912 연속합 ( dp ) With 파이썬 (0) | 2023.07.04 |
[PS] BOJ10844 쉬운 계단 수 ( DP ) With 파이썬, JAVA (0) | 2023.06.28 |
[PS] BOJ159990 1,2,3 더하기 5 ( DP ) With 파이썬 (0) | 2023.06.27 |