moriarty0504   4년 전

안녕하세요?

이틀동안 타임오버로 계속 전전긍긍하다가 질문을 드립니다.

팁을 읽고나서 3차원 배열로 visited 처리를 하면서

BFS 탐색으로 푸는 알고리즘이구요. 자주 인덱싱을 해야하는 값은 따로 변수로 지정하는 등

나름대로 속도를 빠르게 하기위해서 최적화를 많이했는데도 계속 타임오버가 뜨네요

BFS 라서 종착지에 도착하면 바로 와일문을 나오는 조건도 반영이 되어있습니다.

혜안을 보태주시면 감사하겠습니다.


wider93   4년 전

어제 답변을 올렸었는데 한두 가지 틀린 점이 있어 일단 지웠다가 다시 적습니다.

0. queue.queue가 collections.deque보다 많이 느립니다.  사실 여기만 고쳐도 시간 내에 돌아는 갈 겁니다.
몇 가지 사족은

1. 벽을 부수기 전에 방문한 곳은 벽을 방문한 다음에도 방문할 이유가 없습니다. 그럭저럭 시간이 절반 가까이 줄어드는 걸 확인했습니다. 

2. 인덱싱을 피한다고 하셨지만 그렇지 않은 것 같습니다. 아예 큐에서 꺼낼 때마다 변수별로 저장하면 인덱싱할 일이 없습니다.

3. wall[c][d]를 '0'또는 '1'로만 쓰겠다면 일단 효율을 떠나서 정수나 부울로 바꿔두는 게 낫지 않을까요.

언급된 부분을 모두 직접 수정한 코드입니다. 

moriarty0504   4년 전

감사합니다. 많은 도움이 되었습니다.

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