16234번 - 인구 이동
최대한 코드를 최적화하였다고 생각합니다. 78~79%에서 계속 시간초과가 발생하는데 어느 부분에서 시간초과가 발생하는 걸까요?
모든 코드를 보지 않았지만 57번째줄에 visited 배열을 계속 선언을 해줄 이유가 없어보입니다.
그리고 맵을 copy하시는데, 위와 같은 방식으로하면 모든 배열 인덱스를 순회하기때문에 비효율적입니다. ArrayList에 list.add(new int[] {y,x}) 이런식으로 변경된 부분만 체크해서 맵을 변경하시면 될거같아요
위와 같은 맥락으로 "순회할 곳만 순회해야한다"는 시간을 줄이는데 좋은 포인트입니다.
위와 같은 방법으로도 충분히 통과하지만, 더욱 시간을 줄이기 위해서 main함수에서 `모든 배열의 인덱스를 조회`하면서 bfs() 하지말고, bfs() 후 `변경된 부분`에 있어서만 처리하는 것이 많은 시간을 줄여줄겁니다.
좋은 댓글 감사합니다!
댓글을 작성하려면 로그인해야 합니다.
shchon1993 4년 전
최대한 코드를 최적화하였다고 생각합니다. 78~79%에서 계속 시간초과가 발생하는데 어느 부분에서 시간초과가 발생하는 걸까요?