728x90
https://www.acmicpc.net/problem/2178
from collections import deque
import sys
n, m = map(int, sys.stdin.readline().split())
graph = [ list(map(int, sys.stdin.readline().strip())) for _ in range(n) ]
visited = [ [0]*m for _ in range(n) ]
dx = [ 0, 0, -1, 1 ]
dy = [ -1, 1, 0, 0 ]
def bfs():
visited[0][0] = 1
q = deque()
q.append([0, 0])
while q:
x, y = q.popleft()
if x == n-1 and y == m-1:
return visited[x][y]
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m:
if graph[nx][ny] == 1 and not visited[nx][ny]:
visited[nx][ny] = visited[x][y] + 1
q.append([nx, ny])
print(bfs())
visited가 아닌 graph에 직접 +1을 추가해가며 return graph[x-1][y-1]을 해줘도 괜찮습니다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 1929 파이썬(python) : 소수 구하기 - (에라토스테네스의 체) (0) | 2022.07.05 |
---|---|
[백준] 1697: 숨바꼭질 (0) | 2022.06.30 |
[백준] 7569: 토마토 (0) | 2022.06.30 |
[백준] 2667: 단지번호붙이기 (0) | 2022.06.29 |
[백준] 2869 python(파이썬) : 달팽이는 올라가고 싶다 - 상세해설 (0) | 2022.05.20 |