본문으로 바로가기

[백준/Python(파이썬)] 2156 포도주 시식

category PS/백준 2021. 2. 15. 20:40

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

이 문제의 가장 중요한 조건은 연속으로 3잔은 마실 수 없다는 것

가장 많은 양의 포도주를 마시기 위해서는 3가지 방법으로 나뉜다

i번째 잔을 마신다고 가정

1. 이번 포도주를 마시고 이전 포도주를 안 마신 경우

2. 이번 포도주를 마시지 않는 경우

3. 이번 포도주와 이전 포도주 모두 마신 경우

 

[소스코드]

n = int(input())
wine = [int(input()) for _ in range(n)]

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

github.com/jisun1125/algorithm-problem-solving/blob/main/baekjoon/no_2156.py