09009

[백준 2156번] 포도주 시식 본문

Algorithm/DP
[백준 2156번] 포도주 시식
09009

문제 보기
https://www.acmicpc.net/problem/2156

 

2156번: 포도주 시식

효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규

www.acmicpc.net

 
문제 해결
마지막 포도주를 마셨을 때랑 마시지 않았을 때를 가정하여 문제를 해결해야 한다.

 

i = 2

- 마지막 포도주를 마실 때

- 마지막 포도주를 마시지 않을 때 

 

 

i = 3 이상일 때

- 마지막 포도주를 마실 때

- 마지막 포도주를 마시지 않을 때 


 
 
 
 
소스 코드

n = int(input())
arr = [0] * 10000
for i in range(n):
    arr[i] = int(input())

d = [0] * 10000
d[0] = arr[0]
d[1] = arr[0] + arr[1]
d[2] = max(arr[0] + arr[2], arr[1] + arr[2], d[1])

for i in range(3, n):
    d[i] = max(d[i-3] + arr[i-1] + arr[i], d[i-2] + arr[i], d[i-1])

print(max(d))