bfs로 해결하였다.
처음 시작점으로부터 마지막 점까지의 계층을 구분짓기 위하여 while 문 다음에 데큐 크기를 중심으로 for 문을 하나 끼워줬다.
import sys
from collections import deque
# y_axis == n, x_axis == m
y_axis, x_axis = map(int,input().split())
# 방향
d = [[1,0],[-1,0],[0,1],[0,-1]]
graph = [[0]*101 for _ in range(101)]
visited = [[False]*101 for _ in range(101)]
for y in range(y_axis):
a = sys.stdin.readline()
for x in range(x_axis):
graph[y][x] = int(a[x])
ans = 1
def bfs(x,y):
global ans
stop = 0
q = deque([(x,y)])
visited[y][x] = True
while q:
if stop:
break
q_size = len(q)
ans += 1
for size in range(q_size):
if stop:
break
x,y = q.popleft()
for i in range(4):
nx = x + d[i][0]
ny = y + d[i][1]
if nx == x_axis-1 and ny == y_axis-1:
stop = 1
break
elif 0 <= nx < x_axis and 0 <= ny < y_axis and graph[ny][nx] and not visited[ny][nx]:
visited[ny][nx] = True
q.append((nx,ny))
bfs(0,0)
print(ans)
'백준' 카테고리의 다른 글
영화감독 숌 - 1436번 (0) | 2022.10.05 |
---|---|
적록색약 - 10026번 (0) | 2022.10.04 |
유기농 배추 - 1012번 (0) | 2022.10.04 |
N과 M (2) - 15650 번 (0) | 2022.10.03 |
N과 M (1) - 15649 번 (0) | 2022.10.02 |
댓글