작성
·
170
·
수정됨
0
큰돌님 안녕하세요? 항상 강의 잘 보고 있습니다.
http://boj.kr/b8636c720918477b86a00858b5a8929a
위의 제 코드를 채점했을 때 96%에서 "틀렸습니다"로 채점됩니다.
반례가 도저히 생각나지 않아 큰돌님께 여쭤보고 싶어서 질문글을 작성하게 되었습니다.
항상 감사드립니다 !
답변 1
0
안녕하세요 백규님 ㅎㅎ
잘 짜셨는데요 ㅎㅎ
for (int i = 0; i < 4; i++) {
int ny = y + dy[i];
int nx = x + dx[i];
if (ny < 0 || nx < 0 || ny >= N || nx >= M) {
continue;
}
if (visited[ny][nx] > 0) {
continue;
}
if (a[ny][nx] == 0) {
visited[ny][nx] = seq;
dfs(ny, nx, seq);
} else if (a[ny][nx] == 1) {
q.push(make_pair(y, x));
}
이렇게 하면 q에 중복적인 1인 지점이 담기지 않을까요?
그 때 문에
if (a[ny][nx] == 1) {
visited[ny][nx] = visited[y][x] + 1;
중복되어 +1을 하는 경우가 발생되서 최단거리가 아닌 다른 값이 저장될 수도 있을 것 같습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.