p154 [5-11.py] bfs 미로 탈출 질문입니다.
책 153p 참고로 소스코드 상에서, 첫번째 시작 위치는 다시 방문할 수 있도록 되어 첫 번째 시작 위치에 해당 하는 값이 3으로 변경될 여지가 있다. 하지만 본 문제에서는 단순히 가장 오른쪽 아래 위치로 이동하는 것을 요구하고 있기에 본 소스코드는 정상적으로 답을 도출하는 간결한 정답 코드이다.
라고 되어있습니다. 하지만 이것은 틀렸다고 생각됩니다. 그 이유는 아래와 같습니다.
# 이동할 네 가지 방향 정의 (상, 하, 좌, 우)
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
이미 이동할 방향 순서를 상, 하, 좌, 우의 순서로 리스트의 인덱스를 정하셨고 이는 아래의 반복문
# 현재 위치에서 4가지 방향으로의 위치 확인
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
으로 인하여, 반드시 1) 상 2) 우 3) 좌 4) 우 로 움직이게 되어 있습니다.
즉, 첫 시작은 (1,1)에서 시작하므로 무조건적으로 "하 체크 후 이동 가능하면 이동 " 을 하게되고, 이후 상 체크 후 이동이 되기 때문에 출력 결과 1을 내고 프로그램이 종료되게 됩니다.
입력결과가 어떻게 달라지냐에 상관없이 (2,1), 리스트 인덱스로는 [1][0] == 1 이 되면 절대적으로 마지막 칸에 도달할 수 없다고 생각됩니다.
실제 코드를 복사하여 동일한 입력값을 입력했을 때 역시 출력결과 1을 반환하고 프로그램이 종료됩니다.

입력한 데이터가 틀렸습니다. 입력하신 데이터를 분석해보면 아래 데이터로 변경하여 테스트를 해야할꺼 같습니다.
5 6
101010
111111
000001
111111
111111
앗 그랬네요. 입력값을 올바르게 하니 맞는 출력이 나옵니다. 다만, 어째서 제가 설명한 상황에서 첫시작지점으로 돌아가지 않고 목적지를 향해 코드가 진행되는 것인지 플로우가 도무지 이해가 안됩니다. 논리에 모순이 있다면 집어주시면 정말 감사하겠습니다!!