인프런 커뮤니티 질문&답변

김지호님의 프로필 이미지
김지호

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

3-D와 반례

3-D 반례 질문드립니다.

작성

·

155

0

안녕하세요 선생님. 예제와 커뮤니티의 반례들은 모두 통과하는데, 백준 2%에서 오답으로 처리되어 질문드립니다.

불이 시작되는 부분부터 BFS를 통해 표시를 해두고, J를 dfs로 움직이게 하는 로직으로 구현했습니다.

 

http://boj.kr/8202d9f54d6b45e489a6888088d047e1

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 지호님 ㅎㅎ

DFS는 최단거리로 가는 것을 장담을 하지 못합니다.

즉, 이렇게도 갈 수가 있습니다.

image

이 때문에 반례가 뜨게 됩니다. time을 매개변수를 걸어서 + 1을 기반으로 하신 것은 좋으나.

이미 앞선 코드의 visited를 걸어놔서 방문한 정점은 다시 방문을 하지 못하게 되어 로직 자체가 꼬입니다.

        if(vis[nx][ny] || a[nx][ny] == -1) continue;
        if(a[nx][ny] != 0 && a[nx][ny] <= time+1) continue;

 



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


김지호님의 프로필 이미지
김지호
질문자

감사합니다. 덕분에 해결했습니다

김지호님의 프로필 이미지
김지호

작성한 질문수

질문하기