해결된 질문
작성
·
41
·
수정됨
0
http://boj.kr/ad93c77cfed245858c644f3adb037853
큰돌님 작성한 코드의 42번 if 문은 있어도 없어도 둘 다 통과하는데
if 문이 없어도 되는 이유가
J 값이 처음부터 가장자리면 바로 출력하면 되는 거고 가장자리가 아니더라도
53번의 if문을 통해서 fvisited 값보다 무조건 작은 jvisited 값이 가장자리까지 가는 로직이라서 그런 거죠 ??
답변 3
1
안녕하세요 ㅎㅎ
네 맞습니다.
if (jvisited[y][x]+1 < fvisited[ny][nx]) {
jvisited[ny][nx] = jvisited[y][x] + 1;
이미 이 로직으로 queue에 들어간 정점들의 경우 jvisited[y][x] < fvisited[y][x]가 자명하기 때문에 추가적으로 하지 않으셔도 됩니다.
감사합니다.
0
0
안녕하세요 대기업님 ㅎㅎ
while(q.size()) {
tie(y, x) = q.front(); q.pop();
if (jvisited[y][x] < fvisited[y][x]) {
ret = jvisited[y][x];
break;
}
for (int i = 0; i < 4; i++) {
if문 지워봤는데 통과가 안됩니다...
확인부탁드립니다.
감사합니다.