Coding Test
[백준] 포도주 시식
상상쓰
2021. 7. 5. 15:49
https://www.acmicpc.net/problem/2156
2156번: 포도주 시식
효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규
www.acmicpc.net
동적 계획알고리즘으로 조건에서 연속적으로 놓여있는 3잔을 모두 마실 수 없으므로 2잔을 연속으로 마시는 경우는 wine[i][0] 에 담았고 그렇지 않은 경우 중 최댓값을 M 으로 두어 wine[i][1] (= wine[i][1] + M) 에 담았다.
최종적으로 wine 에 들어있는 값 중 최댓값을 반환한다.
import sys
N = int(sys.stdin.readline())
wine = []
M = 0
answer = 0
for i in range(N):
wine.append([0, int(sys.stdin.readline())])
if N == 1:
answer = wine[0][1]
else:
wine[1][0] = wine[0][1] + wine[1][1]
for i in range(2, N):
wine[i][0] = wine[i-1][1] + wine[i][1]
if M < max(wine[i-2][0], wine[i-2][1]):
M = max(wine[i-2][0], wine[i-2][1])
wine[i][1] += M
a, b = wine[-1]
c, d = wine[-2]
answer = max(a, b, c, d)
print(answer)