hsw0194   3년 전

제 코드는 일단

상어의 위치를 기준으로 BFS를 돌리고

그 bfs 내부에서 자신보다 몸집이 작은 물고기들을 우선순위 큐에 넣습니다

우선순위 큐 내부에서는 거리,y가 낮은것,x가 낮은것(위쪽,왼쪽)순으로 정렬이 되고

그중에서 조건을 만족하는 물고기를 먹고

상어가 그자리로 이동 후 

다시 bfs 돌리고 이과정을 반복하고

더이상 먹을 물고기가 없다면 프린트하고 종료하는 코드입니다

2%에서 시간 초과가 나네요.. 어디가 문제일까요?

hsw0194   3년 전

무한 루프를 유발하는 반례코드

10
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 9

입력하니 99가 나왔고

7
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 9

48나옵니다 

무한루프는 아닌거같은데 ㅠㅠ

hsw0194   3년 전

풀었습니다.

자기보다 작은 사이즈를 찾았을때 그 물고기를 중심으로 탐색을 계속해야한다고 생각했는데

그 물고기에서 탐색을 계속할경우 다음에 발견하게되는 물고기는 

거리값이 더 커지기때문에 탐색할 필요가 없더라구요.

dyl9912   2년 전

무한 루프 반례 덕분에 풀었습니다.. ㅠㅠ

저는 상어 사이즈가 9보다 커지고 상어가 상어를 잡아 먹으면서 제자리에 있더라구요.. 후...

진짜 어리버리하게 헤맸네요 ㅠㅠ

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