반례는 아니고
3 3
1 1 1
1 1 1
1 1 1
(1,1)에서 출발해서 먼저 아래로 세번 가서 (3,1) ans[3][1][0]=3이 됩니다.(pq에 들어가겠죠)
그 다음에 또 여러번 돌다가 r d d l 방향으로 움직여서 ans[3][1][1]=5가 됩니다.(마찬가지로 pq에 또 들어갑니다) 다른 경로로 탐색으로 하면 ans[3][1][1]=7로 갱신되면서 또 pq에 들어갑니다.
다른 방향으로 탐색을 하면 ans[3][1][0]=5로 갱신되면서 또 pq에 들어갑니다.
대충 돌려봐도 (3,1)좌표에 대한 ans값이 4번 갱신됩니다. 올려주신 코드를 보니 (x,y)에 대해 ans[x][y]가 갱신될때마다 pq에 들어가니 4번 들어가겠네요
중복방문을 걸러주시려고 했는데 4번이나 들어가는거네요
이 N이 커질수록 같은좌표가 pq에 여러번 들어가는 빈도가 늘어날테고 이런이유로 시간초과가 나는것 같습니다...
hbk388 5년 전
우선순위 큐 + 다익스트라를 이용해서 풀어보려고 했습니다.
그런데 9%에서 시간초과가 뜹니다.
제가 푼 방식이 어디서 시간이 많이걸리길래 시간초과가 뜨는걸까요... 도와주세요.ㅠ
갔던 곳을 다시 가지않기 위해 왔던 방향을 저장해서 다시 그곳으로 안가도록 했습니다.