반례입니다.
1463번 - 1로 만들기
올려주신 코드로 테스트하면서 찾은 내용 공유할게요
dp[30]=5 나오는 이유가
11라인에서 dp[30]=4 를 넣었지만, 14라인에서 dp[15]=4랑 dp[29]=5를 비교한 값을 다시 dy[30]에 쓰기 때문에 이전에 계산한 4가 없어지기 때문이네요.
그러므로 루프 첫줄에서 dp[i] = dp[i-1] + 1;로 이전에 구해놓은 값을 먼저 저장해 놓고 비교를 해야 해결이 되네요.
dp[i] = Math.min(dp[i - 1], dp[i / 3]) + 1; =>dp[i] = Math.min(dp[i], dp[i / 3]+1);
덕분에 잘 배우고 갑니다. 수고하세요.
댓글을 작성하려면 로그인해야 합니다.
rds257 2년 전
안녕하세요
문제 풀이 중 1을 가장 먼저 빼야 하는 이유가 궁금합니다.
아래와 같은 코드는 잘못된 코드입니다.
하지만 틀린 이유를 잘 모르겠습니다.
해답을 알려주시면 감사하겠습니다.