본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#155 백준 파이썬 [2156] 포도주 시식 - 점화식

https://www.acmicpc.net/problem/2156

 

 

#Solution

result[i]의 최댓값을 구하는 것은 세 가지 방법에 의해 결정된다.

1) OXOO: 연속 두 개

2) OXO: 하나 띄고 한 개

3) X: i번째를 마시지 않는 경우

wine = int(input())
wine_capa = [0]
result = [0 for _ in range(wine + 1)]

for _ in range(wine):
    wine_capa.append(int(input()))

for i in range(1, wine + 1):
    if i == 1:
        result[1] = wine_capa[1]
    elif i == 2:
        result[2] = wine_capa[1] + wine_capa[2]
    else:
        result[i] = max(result[i-3] + wine_capa[i-1] + wine_capa[i], result[i-2] + wine_capa[i], result[i-1])  

print(result[i])