effort98   2년 전

여기서 계속 수정을 해도

메모리 초과나 시간초과가 계속 뜨네요..

어케 해결하는거죠..

jih7368   2년 전

22행 visit[i*1] = 0에서 visit[i*2] = 1로 고치고, 14행과 18행도 visit [i - 1] = 1, visit[i + 1] = 1로 수정하셔야합니다.

지금 상황에선 visit을 체크하지 않아서 계속 같은 곳을 중복으로 탐색하게 됩니다.

그리고 임의의 값 5를 시작할 때 추가하셨는데, 5가 아니라 N을 추가해야 시작점에서부터 탐색할 수 있습니다.

visit[N] = 1

a = [[N]]

c = [N] 으로 수정하셔야겠네요. 현재 풀이에서 c는 필요없는 것 같습니다.

그리고 visit은 100000이 최대가 아닙니다. 99에서 197을 간다면 *2해서 198로 이동한 다음 -1을 하는 것이 최소시간인데, 이처럼 생각하면 visit의 최대 크기가 몇이 될지 생각해보시기 바랍니다.

djm03178   2년 전

10만을 최대로 해도 됩니다. 말씀하신 케이스는 목표가 홀수이기 때문에 발생하는 것이고 짝수가 목표이면 그보다 높이 갈 필요는 없습니다.

jih7368   2년 전

본 문제에는 K의 홀짝에 대한 제약조건이 없어서 10만보다 크게 잡아야하는 경우를 고려해야할 것 같습니다.

djm03178   2년 전

제 말씀은, 목적지가 홀수인 경우의 최댓값은 99999이며 이때에도 10만을 넘게 갈 일이 없기 때문에 10만을 죄대로 해도 된다는 의미입니다.

jih7368   2년 전

아 그렇군요..! 거기까진 생각을 못 했습니다. 보충해주셔서 감사합니다.

댓글을 작성하려면 로그인해야 합니다.