백준 2156번 포도주 시식

문제

2156

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

풀이 과정

n번째 잔을 마시는 경우

n 이전 잔을 안마시는 경우 
wine[n] + wine[n-1] -> dp[n] = wine[n] + dp[n-2]

n 이전 잔을 마시는 경우
wine[n] + wine[n-2] -> dp[n] = wine[n] + wine[n-1] + dp[n-3] 

최대값 비교
dp[n] = max(dp[n-2] + wine[n], dp[n-3] + wine[n-1] + wine[n])

n번째 잔을 안마시는 경우

이전까지 최대값인 dp[n-1] 저장
dp[n] = dp[n-1]

이전 값과 비교
dp[n] = max(dp[n-1], dp[n])

예시

21562

C++ 소스코드

댓글남기기