[백준/파이썬] 2156번 포도주 시식 풀이

업데이트:



문제 정보


풀이

문제

연속으로 3잔을 마실 수 없다는 조건에서 마실 수 있는 포도주의 최대 양을 구하는 문제입니다.

코드

import sys

n = int(sys.stdin.readline())
wine = [0]+[int(sys.stdin.readline()) for _ in range(n)]

d = [0, wine[1], wine[1]+wine[2] if n > 1 else 0]
for i in range(3, n+1):
    d.append(max(d[i-3]+wine[i-1]+wine[i], d[i-2]+wine[i], d[i-1]))
print(d[n])

설명

i번째 잔 기준으로 (i-1, i)를 연속으로 마시는 경우, i만 마시는 경우, i를 안 마시는 경우를 비교해 최댓값을 누적합니다.



댓글남기기