16236번 - 아기 상어
bfs로 문제를 풀었는데
43번째 줄에서 현재 칸의 check값이 distance보다 작을때만 갱신한다는 조건을 왜 넣어주어야 하는지 모르겠습니다.
43-44번째 줄을 조건문 없이 그냥 distance = check[tmpx+mx[i]][tmpy+my[i]] 로 바꾸면 답이 다르게 나옵니다.
어차피 bfs면 check값이 같은 칸들만 쭉 들어오고 check값이 1 증가한 칸이 들어올때는 32번째 줄에서 break를 시켜주는데 왜 조건을 굳이 넣어주어야 하는지 이해가 안됩니다ㅠㅠ 도움 부탁드립니다ㅠㅠ
32번째 줄을 아래와 같이 변경해야 합니다.
if(check[tmpx][tmpy] >= distance) break;
만약에 distance 가 7인데 현재 탐색하려는 check[tmpx][tmpy] 도 7이면 조건 문에 안걸리고 작은 물고기를 찾아서 distance가 갱신됩니다.
예제 5번을 돌려보시면 될 것 같아요.
댓글을 작성하려면 로그인해야 합니다.
stajw 3년 전
bfs로 문제를 풀었는데
43번째 줄에서 현재 칸의 check값이 distance보다 작을때만 갱신한다는 조건을 왜 넣어주어야 하는지 모르겠습니다.
43-44번째 줄을 조건문 없이 그냥 distance = check[tmpx+mx[i]][tmpy+my[i]] 로 바꾸면 답이 다르게 나옵니다.
어차피 bfs면 check값이 같은 칸들만 쭉 들어오고 check값이 1 증가한 칸이 들어올때는 32번째 줄에서 break를 시켜주는데 왜 조건을 굳이 넣어주어야 하는지 이해가 안됩니다ㅠㅠ 도움 부탁드립니다ㅠㅠ