알고리즘/BOJ
[Python] 백준 4811번: 알약
PIAI
2021. 10. 7. 13:15
https://www.acmicpc.net/problem/4811
4811번: 알약
입력은 최대 1000개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄이며, 병에 들어있는 약의 개수 N ≤ 30 가 주어진다. 입력의 마지막 줄에는 0이 하나 주어진다.
www.acmicpc.net
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])