2156:포도주 시식
https://www.acmicpc.net/problem/2156
풀이 1) 이차원 배열
d[i][j]
- 1~i 번째 포도주까지 마셨을 때, 마실 수 있는 포도주의 최대 양
i번째 포두주 잔은 j 번 연속 마신 포도주 잔임
- 1~i 번째 포도주까지 마셨을 때, 마실 수 있는 포도주의 최대 양
a[i]
- (i : 1~n)
- i 번째 포도주의 양
결과
- d[n][0] = max( d[n-1][0] , d[n-1][1], d[n-1][2] )
- d[n][1] = d[n-1][0] + a[n]
- d[n][2] = d[n-1][1] + a[n]
풀이 2) 일차원 배열
d[i]
- 1~i 번째 포도주까지 마셨을 때, 마실 수 있는 포도주의 최대 양
a[i]
- (i : 1~n)
- i 번째 포도주의 양
결과
- 0번 연속 : d[i] = d[i-1]
- 1번 연속 : d[i] = d[i-2] + a[i]
- 2번 연속 : d[i] = d[i-3] + a[i-1] + a[i]