배움과 성장/알고리즘·문제풀이
백준 2156 포도주 시식 Java: 마지막 잔을 고르지 않는 DP 점화식
이 문제를 처음 봤을 때는 계단 오르기처럼 “현재 잔을 마신다”는 전제로 점화식을 세웠다. 하지만 포도주 시식은 마지막 잔을 반드시 마셔야 한다는 조건이 없다. 이 차이를 놓쳐 두 번 틀렸고, 세 번째에는 n 을 처리하지 않아 배열 범위를 벗어났다. 네 번째 시도에서야 통과했다.DP 문제를 꾸준히 풀다 보니 점화식을 찾는 과정 자체가 조금씩 재미있어진다. 이번 문제의 핵심은 각 위치에서 “마신다”만 따지지 않고, 마시지 않는 경우까지 상태에 넣는 것이었다.문제를 어떻게 상태로 바꿀까포도주 잔은 일렬로 놓여 있고 연속으로 세 잔을 마실 수 없다. 각 잔의 양은 0 이상 1,000 이하이고, 잔의 수 n은 최대 10,000이다.dp[i]를 1번부터 i번 잔까지 고려했을 때 마실 수 있는 포도주의 최댓값으로 ..