728x90
반응형
기본적인 다이나믹 프로그래밍 문제이다. 현재 포도주를 마시지 않는 경우, 앞에 포도주를 마시고 현재 포도주를
마시는 경우, 앞에 포도주를 마시지 않고 현재 포도주를 마시는 경우로 총 세 가지를 고려해주면 된다.
-> dp[i] = max(dp[i-1], dp[i-3]+li[i-1]+li[i], dp[i-2]+li[i])
n = int(input())
li = [0] + [int(input()) for _ in range(n)]
dp = [0]*(n+1)
dp[1] = li[1]
if n > 1:
dp[2] = li[1] + li[2]
for i in range(3, n+1):
dp[i] = max(dp[i-1], dp[i-3]+li[i-1]+li[i], dp[i-2]+li[i])
print(max(dp))
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 15654번 N과 M (5)(python) (0) | 2021.03.21 |
---|---|
백준 알고리즘 14697번 방 배정하기(python) (0) | 2021.03.21 |
백준 알고리즘 12852번 1로 만들기 2(python) (0) | 2021.03.20 |
백준 알고리즘 15652번 N과 M (4)(python) (0) | 2021.03.20 |
백준 알고리즘 15651번 N과 M (3)(python) (0) | 2021.03.20 |