모든 BFS는 반드시 방문 체크를 해야 합니다. 방문 체크를 하지 않으면 같은 좌표가 큐에 중복으로 들어가게 되고, 이것이 반복되면 시간복잡도가 지수 형태가 됩니다.
16236번 - 아기 상어
방문을 했을 경우
copy[tmp.point.y][tmp.point.x] = INT_MAX; 로 바꾸어서 이미 지나간 부분이라 체크를 했다고 생각하는데 이 부분이 틀린 것인가요?
아... 그 부분 해결하니깐 바로 성공 떴습니다. 시간초과는 최적화의 문제로만 생각했는데 그게 아니였군요. 감사합니다!
그냥 몸무게를 7이상 늘리지 않게 해서 풀었습니다.
댓글을 작성하려면 로그인해야 합니다.
lucian0910 5년 전
제가 사용한 방법은
copy map을 따로 만들어서 그 map 부분에만 bfs 돌리다가 먹을 것을 발견하면 bfs 빠져나가서 그 위치 값을 원래 map에 저장하고 이렇게 queue가 아예 빌 때까지 반복하는 식으로 알고리즘을 수행했는데 시간초과가 뜹니다. 어떤 부분에서 최적화가 이뤄져야 하는지 정보 부탁드립니다...