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
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 1850 최대공약수 (0) | 2023.03.24 |
|---|---|
| [파이썬] 백준 2302 극장 좌석 (0) | 2023.03.24 |
| [파이썬] 백준 1946 신입사원 (0) | 2023.03.21 |
| [파이썬] 백준 11286 절댓값 힙 (0) | 2023.03.21 |
| [파이썬] 백준 1475 방 번호 (0) | 2023.03.20 |