stajw   3년 전

bfs로 문제를 풀었는데

43번째 줄에서 현재 칸의 check값이 distance보다 작을때만 갱신한다는 조건을 왜 넣어주어야 하는지 모르겠습니다.

43-44번째 줄을 조건문 없이 그냥 distance = check[tmpx+mx[i]][tmpy+my[i]] 로 바꾸면 답이 다르게 나옵니다.

어차피 bfs면 check값이 같은 칸들만 쭉 들어오고 check값이 1 증가한 칸이 들어올때는 32번째 줄에서 break를 시켜주는데 왜 조건을 굳이 넣어주어야 하는지 이해가 안됩니다ㅠㅠ 도움 부탁드립니다ㅠㅠ

aftersnow   3년 전

32번째 줄을 아래와 같이 변경해야 합니다.

if(check[tmpx][tmpy] >= distance) break;

만약에 distance 가 7인데 현재 탐색하려는 check[tmpx][tmpy] 도 7이면
조건 문에 안걸리고 작은 물고기를 찾아서 distance가 갱신됩니다.

예제 5번을 돌려보시면 될 것 같아요.

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