https://www.acmicpc.net/problem/4811
1. 알약 한개짜리를 먹으면 반으로 나누어진다.
2. 각 일수마다 알약 반개의 갯수를 배열에 저장하고 마지막일수에 0이 되는것들이 답이다.
dp = [[-1 for _ in range(32)] for _ in range(61)]
dp[1][1] = 1
for i in range(2, 61):
for j in range(31):
if dp[i-1][j] >= 0:
dp[i][j+1] = max(0, dp[i][j+1]) + dp[i-1][j]
if j >= 1:
dp[i][j-1] = max(0, dp[i][j-1]) + dp[i-1][j]
while True:
n = int(input())
if n == 0:
break
print(dp[n*2][0])
'알고리즘 > BOJ' 카테고리의 다른 글
[Python] 백준 1958번: LCS 3 (0) | 2021.10.07 |
---|---|
[Python] 백준 17404번: RGB거리 2 (0) | 2021.10.07 |
[Python] 백준 2056번: 작업 (0) | 2021.10.06 |
[Python] 백준 20040번: 사이클 게임 (0) | 2021.10.06 |
[Python] 백준 9084 동전 (0) | 2021.10.05 |
댓글