# bfs : 최단거리 보장
# bfs : "바로 보드에 저장해버리자 (이동 시 1씩 증가) -> 거기까지 가는데 걸리는 값 개념으로 접근!"
# 문제 풀이
from collections import deque
# input
n,m = list(map(int, input().split()))
# 출력 : 지나야하는 최소 칸 수
mymap = []
for i in range(n):
mymap.append(list(map(int,list(input())))) # 여기서 약간 err (int -> str)
print(mymap[0][0],type(mymap[0][0]) , "<< ")
xb = [0,1,0,-1]
yb = [1,0,-1,0]
visited = [[False] * m for _ in range(n)]
tmpmap = [k[:] for k in mymap]
q = deque([(0,0)])
visited[0][0] = True
while q:
a = q.popleft()
for j in range(4):
x = a[0] + xb[j]
y = a[1] + yb[j]
if x >= n or x < 0 or y >= m or y < 0:
continue
if (x == (n-1)) and (y == (m-1)):
pass
if (tmpmap[x][y] == 1) and (visited[x][y] != True):
q.append((x,y))
visited[x][y] = True
# edit
tmpmap[x][y] = tmpmap[a[0]][a[1]] + 1
print(tmpmap[n-1][m-1])
'취업 > 알고리즘이야' 카테고리의 다른 글
[개념] 동적 프로그래밍 (동적 계획법) (0) | 2022.05.05 |
---|---|
2차원 리스트에 max를 함부로 쓰지마세요!! (0) | 2022.05.04 |
[질문] 2차원 구현 시 x, y 헷갈림 (0) | 2022.05.03 |
[이론] 동적프로그래밍 (0) | 2022.05.03 |
파이썬 웹 IDE : replit (0) | 2022.05.01 |