728x90

지금까지 풀었던 bfs 중에 가장 풀이에 근접 했는데 마지막 for 문에서 실수를 해서 못풀어서 구글링을 했다. for i in range(4) 로 하는 것이 맞았고, 이를 제외하면 풀 수 있었다.

from collections import deque
import sys
 
 
a,b = map(int,sys.stdin.readline().split(" "))
 
 
dx = [0,0,1,-1]
dy = [1,-1,0,0]
 
# 1이면 지날 수 있는데 아직 지난 적이 없는 곳
 
k = []
 
for i in range(0,a):
    k.append(list(map(int,sys.stdin.readline().rstrip())))
 
 
queue = deque()
 
queue.append([0,0])
 
 
while queue:   
 
    x,y = queue.popleft()
 
 
 
    # 상, 하, 좌, 우 탐색하기
 
    for i in range(4):
        nx = x + dx[i]
        ny = y + dy[i]
 
        if nx < 0 or nx >= a or ny < 0 or ny >= b:
 
            continue
 
        if k[nx][ny] == 0:
 
            continue
 
        if k[nx][ny] == 1:
            k[nx][ny] = k[x][y] + 1
            queue.append((nx, ny))
 
 
print(k[-1][-1])
 
 
 
728x90

+ Recent posts