6
100
100
1
1
100
100
에서 해당 소스는 301을 출력하지만 실제 답은 400입니다.
2156번 - 포도주 시식
제가 이해하기로는 n번째 포도주를 마시지 않는 경우. 라기보다는
1 2 3 4 5 6
ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ
현재 5번째 잔에서 제일 많이 마실 수 있는 것을 고려한다고 해볼게요
작성자님의 코드에서는 5번째에서 t_g[3] + g[5] 와 t_g[2]+g[4]+g[5] 둘 중 하나를 고르게 되겠죠?
문제가 어디서 발생하냐면 t_g[2]+g[4]+g[5] 를 선택했을 때에요, t_g[2]+g[4]+g[5] 보다 t_g[2]+g[5]+g[6]이 더 큰데 이미 4를 마셔버려서 6을 고르고싶어도 고를수가 없어져버리죠?
그래서 두단계 건너뛰는 것까지 생각하는거라고 저는 이해했어요(n번째를 마시지 않는 경우라기보다, 저는 두단계 건너뛰는 것이라고 이해했네요 사람마다 이해하기 쉬운 방식이 있는 거니까요)
그래서 5번째를 고려할때는 t_g[3]+g[5] 와 t_g[2]+g[4]+g[5] 와 t_g[1]+g[4]+g[5] 세개중 하나를 고르게 되고,
6번째를 고려할때는 t_g[4]+g[6], t_g[3]+g[5]+g[6], t_g[2]+g[5]+g[6] 세개중 하나를 고르게 되죵
댓글을 작성하려면 로그인해야 합니다.
kwr0113 3년 전 1
저는 문제를 보자마자 2579번 계단 오르기 문제랑 동일한 문제라고 생각했는데요
다른점은 마지막 계단은 꼭 밟아야 한다 와 마지막 와인을 마시지 않아도 된다 뿐이라고 생각해서
( n번째 와인 + n-1번째 와인 + n-3번째 와인까지 총합 ) 과 ( n번째 와인 + n-2번째 와인까지 총합 ) 두개를 비교해서 더 큰 값을 n번째 와인까지의 총합 에 넣었는데요
마지막에 출력할때 총 리스트의 최댓값을 찾으면 되지 않나요?
예제를 넣어보면 최종 값이 [6 16 23 28 33 32] 이렇게 저장이 됩니다
왜 n번째 총합을 구할 때 n번째 와인을 마시지 않는 경우를 고려해야 하는지 모르겠습니다