mypark3424   8년 전

몇 주동안 고민해봤는데도 풀리지가 않아서 질문드립니다.


최소값과 최대값의 간격만큼 계속해서 bfs를 돌리는데요 분명히 틀린 경우가 없는 것같은데 계속 틀려서 질문드립니다.


도와주세요~~!!!

f52985   8년 전

for (dn = 0; dn <= mid; dn++)

이 부분이 문제가 되는 것 같습니다.


극단적인 예시로, mid의 값이 1일때를 검사하는데, (1,1)에서 (N,N)까지 가는 길이 7 7 7 7 7 7...7 7로 도배되어 있는 경우를 들 수 있습니다.

프로그램이 원하는 대로 작동을 한다면 bfs는 true를 리턴하여 answer의 값을 1로 수정해야겠지만,

작성하신 프로그램에서는 bfs(0,1) / bfs(1,2)만 확인해보게 되고, (bfs(7,8) 등은 확인하지 않고) 그 결과 1은 answer가 될 수 없다고 판단하게 됩니다

mypark3424   8년 전

답변 잘봤습니다!! 그래서 해당 내용을 수정했는데도 안되네요 ㅠㅠ

 maxvalue를 초반에 찾아서 그값까지 돌리는 것으로 바꿨습니다

f52985   8년 전

아, 알겠군요!

처음에 큐에 (1,1)을 집어넣을 때는 얘가 지정된 범위에 속하는지 확인하는 부분이 없네요

mypark3424   8년 전

감사합니다 통과했습니다!!

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