알고리즘 문제 풀이/Python

python 2156 포도주 시식

맛대 2022. 6. 28. 20:40

dp 활용

  • dp[i] = index가 i일때 최대값 저장
  • dp[i]dp[i-1]에서 안마신 경우, dp[i-2]에서 바로 전잔은 안마시고 이번잔은 마신 경우, dp[i-3]에서 연달아 두잔 마신경우 중 최대값
import sys
def total():
    temp = []
    for _ in range(n):
        volume = int(sys.stdin.readline())
        temp.append(volume)
    return temp

def solve():
    dp = [0]
    dp.append(grape[0])
    if n >= 2:
        dp.append(grape[0]+grape[1])
    for i in range(3,n+1):
        dp.append(max(dp[i-1],dp[i-2]+grape[i-1],dp[i-3]+grape[i-1]+grape[i-2]))
    return dp[-1]

n = int(sys.stdin.readline())
grape = total()
ans=solve()
print(ans)