상상쓰

[백준] 포도주 시식 본문

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)

'Coding Test' 카테고리의 다른 글

[프로그래머스] 단속카메라  (0) 2021.07.07
[프로그래머스] 행렬의 곱셈  (0) 2021.07.06
[백준] 한조서열정리하고옴ㅋㅋ  (0) 2021.07.05
[백준] 과제  (0) 2021.07.02
[프로그래머스] [3차] 자동완성  (0) 2021.07.02
Comments