eastho0116   8달 전

테스트 케이스는 다 맞는데 어쨰서 계속 틀리다고 나올까요...? 어떤 반례가 있는지 아무리 생각해보아도 잘 모르겠습니다...

chad6027   8달 전

BFS를 하실 때, 다음 칸을 queue에 push하면서 방문한 칸이라는 것을 체크해주셔야 합니다.

그렇게 하지 않으면 queue안에 같은 칸이 두 개 이상 존재할 수 있기 때문입니다.

그리고 25~35번 줄은 for문 하나로 처리할 수 있는 방법도 있으니 찾아보시는걸 추천드립니다 !

eastho0116   8달 전

@chad6027 queue안의 같은 칸은 체크하고 continue로 넘기고 있는데 그와 별개로 방문처리를 더 해주어야하는 것인가요...???

chad6027   8달 전

queue에서 나온 값이 중복인지 체크하는 방식은 시간적으로도 매우 손해이고(혹시 시간초과는 안뜨셨나요.?) , 버그 발생의 원인입니다 ㅠㅠ..

제가 말씀드리는건 21~23번 라인을 지우고 25, 28, 31, 33번 라인 if문 안에서 큐에 push하는 좌표의 원소를 _empty로 저장하고나서 push해야한다는 뜻이었습니다.

반례 하나 드릴게요

input : 

3 3

0 0 1

0 0 1

0 0 1

answer : 2

eastho0116   8달 전

@chad6027 세상에... 너무 감사합니다...이제야 말씀이 이해가 되네요...너무 감사합니다...ㅠㅠㅠㅠㅠㅠㅠ

eastho0116   8달 전

@chad6027 방금 제거 바탕으로 풀어주신 코드 봤습니다. 이제야 제대로 이해가 가네요ㅠㅠ 정말 감사합니다!!!

chad6027   8달 전

아까 지적해드린 25~35번 라인 for문으로 바꿔봤습니다.

이차행렬에서 DFS나 BFS를 진행할 때 이런 방식으로 하면 매우 편하니까 알아두시면 좋을 것 같아요

주석 달아드렸습니다 !

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