from collections import deque

# map의 1만을 통과하여map[0][0]에서 map[N][M]에 도달하는 최단경로의 값을 구하여라
# 단 자기 자신의 위칫값을 1로한다

def dfs(map,y,x):

    queue = deque()
    queue.append((y,x))
    while queue:
        #큐에서 xy값 꺼내기
        y,x= queue.popleft()
        row = [0,-1,0,1]
        low = [1,0,-1,0]
        # 자식노드 생성
        for i in range(4):
            yr = y + row[i]
            xr = x + low[i]
            # map 밖을 벗어날 경우 리턴
            if xr<0 or yr<0 or xr>M or yr>N:
                continue
            # 조건 성립시 큐 구조에(x,y) 삽입
            if map[yr][xr] == 1:
                queue.append((yr,xr))
                # 맵의 해당 위치에 +1을 하여 추가
                map[yr][xr] == map[y][x] +1
           
            #만약 값을 만족하면 map의 (N,M)값 리턴
            if yr == N and xr == M:
                print("최솟값은 {}".format(map[N][M]))
                return
    return map
       
map = [
    [1,0,1,0,0,0],
    [1,1,1,1,1,1],
    [0,1,0,1,1,1],
    [1,1,1,1,1,1],
    [1,1,1,1,1,1],
    [1,1,1,1,1,1]
]

N=5
M=5
dfs(map,0,0)

#디버깅 후기 / map 내부값이 하나도 바뀌지 않았다
for i in map:
    for l in i:
        print(l)


알려주면 땡큐하겠습니다