백준 2156번 python 포도주 시식문제 DP
3잔을 연속해서 마시지 않고 최대한 많은 와인을 마셔야하는 문제
3개의 case로 나누었다.
와인이 4잔 있을 경우
case1: 현재의 와인(와인4)을 마시고 이전의 와인(와인2)를 마시지 않고 그 전의 마실 수 있는 와인의 최대치를 마심
case2: 현재의 와인(와인4)과 이전의 와인(와인3)를 마시고 와인2를 못마시는경우
case3: 와인2과 와인3를 마셔 현재의 와인4를 마시지 못하는경우
case1: wine4 + (wine1+wine2)
case2: wine4 + wine3 + (wine1)
case3: wine2 + wine3
이런식이 될것임
n = int(input())
wine = [0]
dp = [0]
[wine.append(int(input())) for _ in range(n)]
dp.append(wine[1])
if n > 1 :
dp.append(wine[1]+wine[2])
for i in range(3,n+1):
case1 = wine[i] + dp[i-2]
case2 = wine[i] + wine[i-1] + dp[i-3]
case3 = dp[i-1]
dp.append(max(case1,case2,case3))
print(dp[n])
'알고리즘' 카테고리의 다른 글
[파이썬] 백준 1935 후위표기식2 python (0) | 2021.05.07 |
---|---|
[파이썬] 백준1918 후위표기식 python (0) | 2021.05.07 |
[백준 11399 파이썬] ATM (0) | 2021.03.11 |
[백준 1931 파이썬] 회의실 배정 (0) | 2021.03.10 |
[백준 11047] 파이썬 동전 0 (1) | 2021.03.07 |
댓글