2156번 - 포도주 시식
전에 계단 오르기 문제에서 변형해서 풀다보니 stair라고 이름 지은건 신경쓰지 마세요
일단 제출하면 시간초과납니다.
그래서 이 코드가 시간 초과만 아니면 옳은건지도 잘 모르겠습니다.
제가 생각한 점화식은
dp[n] = max(dp[n-3]+stair[n]+stair[n-1],
dp[n-2]+stair[n],
dp[n-1])
입니다.
시간 초과를 해결할 방법과 점화식이 옳은지 궁금합니다.
이 코드가 시간 초과 나는 이유는 비효율적이기 때문이 아니라 배열의 범위를 벗어나는 undefined behavior가 발생하기 때문입니다.
n의 최댓값이 10000인데, 이 코드에서 사용하는 배열의 크기는 겨우 301밖에 안 되고 있습니다.
계단 오르기 문제를 변형하셔서 신경쓰지 말라고 하셨지만, 바로 그 부분을 신경쓰지 않으셔서 발생한 문제입니다.
진짜 어이없는 이유엿네요...
제가 직접 0을 9000개 정도 넣었을때도 프로그램이 1초 안에 정상 종료해서
뭐가 문제지 하고있었는데...하하
댓글을 작성하려면 로그인해야 합니다.
dltjr0703 2년 전
전에 계단 오르기 문제에서 변형해서 풀다보니 stair라고 이름 지은건 신경쓰지 마세요일단 제출하면 시간초과납니다.
그래서 이 코드가 시간 초과만 아니면 옳은건지도 잘 모르겠습니다.
제가 생각한 점화식은
dp[n] = max(dp[n-3]+stair[n]+stair[n-1],
dp[n-2]+stair[n],
dp[n-1])
입니다.
시간 초과를 해결할 방법과 점화식이 옳은지 궁금합니다.