본문 바로가기
알고리즘/BOJ

[Python] 백준 4811번: 알약

by PIAI 2021. 10. 7.

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])

'알고리즘 > 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

댓글