빠똥빠똥
2156번 포도주 시식(DP) - ☆ 본문
#문제링크 : https://www.acmicpc.net/problem/2156
<전략>
1. n번째 포도주를 0번 연속해서 마신건지, 1번 연속해서 마신건지, 2번 연속해서 마신건지로 총 3가지 상태가 나온다.
2. 0번 마셨다면, n-1번째 포도주를 0,1,2번 마신 상황 중 가장 큰 값을 n번째에 가져오면 된다.
3. 1번 마셨다면, n-1번째 포도주에서 0번 마신 상황 + 현재 n번째 포도주의 양으로 계산한다.
4. 2번 마셨다면, n-1번째 포도주에서 1번 마신 상황 + 현재 n번째 포도주의 양으로 계산한다.
<전략>
1. 이차원 배열안쓰고 일차원 배열로 해결할 때는, 0번 연속 마시는 경우에는 d[n] = d[n-1]이고, 1번 연속 마시는 경우가 더 크면 d[n] = d[n-2] + num[n], 2번 연속 마시는 경우가 더 크면 d[n] = d[n-3] + num[n] + num[n-1]이 된다.
'백준' 카테고리의 다른 글
11054번 가장 긴 바이토닉 부분 수열(DP) - ☆ (0) | 2020.06.22 |
---|---|
11053번 가장 긴 증가하는 부분 수열(DP) - ☆ (0) | 2020.06.22 |
9465번 스티커(DP) - ☆ (0) | 2020.06.19 |
11057번 오르막 수(DP) (0) | 2020.06.19 |
10844번 쉬운 계단 수(DP) - ☆ (0) | 2020.06.18 |