sta48   3년 전

예제 테케는 모두 정답으로 나옵니다

채점중 0%에서 걸려서 시간초과라고 나오는데

최대한 시간 복잡도 줄여보려고 노력했는데 잘 안되네요ㅜㅜ

아기상어가 물고기를 먹고 위치 이동할 때마다 bfs로 전체 dist배열을 갱신하는 작업이 불필요한 작업일까요?

메모이제이션으로 풀어야 하는 건가요?


채점번호 :

19705555

aftersnow   3년 전

find_next 함수에서 dist[j][i] == 0 경우도 예외처리를 해야합니다.

아기 상어의 현재 위치, 아기 상어보다 크기가 작은 물고기지만 큰 물고기 때문에 갈 수 없는 경우 dist[j][i] 가 0 입니다.

시간 초과가 나는 이유는 아기 상어의 크기가 9 이상이 됐을 때 자기 자신의 위치를 계속 n_q에 넣어서 그런 것 같아요.

그리고 is_chk 함수도 수정이 필요한 것 같습니다.

행 위치까지 같은 경우(get<0>(a) == get<0>(b) 왼쪽 열이 선택되어야 합니다.

sta48   3년 전

감사합니다
dist배열의 0일때 예외처리가 안되어서
불필요한 동작을 반복적으로 했기 때문에
시간초과였네요

is_chk함수는 수정했었는데
계속 시간초과나서 포기하고 있었는데..
다시 한번 감사합니다!

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