문제 풀기 전에는 계단 오르기와 비슷할거라고 생각했다. 근데 N=int(input()) wl=[int(input()) for _ in range(N)] dp=[0]*N dp[0]=wl[0] if N>1: dp[1]=wl[0]+wl[1] if N>2: dp[2]=max(wl[0]+wl[2],wl[1]+wl[2],dp[1]) for i in range(3,N): dp[i]=max(dp[i-2]+wl[i],wl[i]+wl[i-1]+dp[i-3],dp[i-1]) print(dp[N-1]) 근데 너무 꼬아서 생각했나..?,, 막 이리저리 꼬아서 생각하다가 머리 속이 엉켜버렸다. 계단오르기는 현재 밟고 있는 계단의 점수를 무조건 더해야 했지만, 포도주시식 문제는 패스 할 수도 있다는게 다른 점 같다.