이 문제는 정말 기본적인 미로탐색 문제다.
n,m 까지 가는데 걸린 이동횟수를 구하는 문제이기때문에 따로 그래프를 만들지 않고 기존에 있는 그래프에 이동할때마다 값을 더해주어 n,m 의 좌표값을 출력해주도록 작성해주었다.
from collections import deque
n, m = map(int,input().split())
graph = []
for i in range(n):
graph.append(list( map(int,input().rstrip())))
def dfs (a,b):
q = deque()
q.append((a,b))
dx = [0,0,1,-1]
dy = [-1,1,0,0]
while(q):
x,y = q.popleft()
for i in range(4):
nx = dx[i]+x
ny = dy[i]+y
#범위내에 있고 방문한 적 없을 때
if 0<= nx <n and 0<= ny <m and graph[nx][ny] == 1:
q.append((nx,ny))
graph[nx][ny] = graph[x][y]+1
return graph[n-1][m-1]
print(dfs(0,0))
코드상의 graph에서는 모든 좌표값이 -1되어있는 상태이므로 n-1,m-1의 좌표값을 return하도록 해주었다.
그리도 visited와 같은 리스트를 생성하지 않고 graph값이 1인지 확인하는 방법을 통해 방문여부를 확인해주었다.