# 파이썬
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
from collections import deque
n,m=map(int,input().split())
S=[list(map(int,[*input()])) for k in range(n)]
D= [[[-1]*2 for j in range(m)] for i in range(n)]
D[0][0][0]=1
q=deque()
q.append((0,0,0))
dx,dy=[0,0,1,-1],[1,-1,0,0]
while q:
x,y,z=q.popleft()
for i in range(4):
nx,ny=x+dx[i],y+dy[i]
if 0<=nx<n and 0<=ny<m:
if S[nx][ny]==0 and D[nx][ny][z]==-1:
D[nx][ny][z]=D[x][y][z]+1
q.append((nx,ny,z))
if z==0 and S[nx][ny]==1 and D[nx][ny][z+1]==-1:
D[nx][ny][z+1]=D[x][y][z]+1
q.append((nx,ny,z+1))
if D[n-1][m-1][0]==-1:print(D[n-1][m-1][1])
elif D[n-1][m-1][1]==-1:print(D[n-1][m-1][0])
else:print(min(D[n-1][m-1]))
|
# 자바
# C++
'프로그래밍' 카테고리의 다른 글
파이썬 명령어 받기 (Parser) (0) | 2020.04.13 |
---|---|
UML Overview (0) | 2020.03.31 |
Permutation [Python, Java, C++] (0) | 2020.03.28 |
[백준 1149 RGB 거리 ] 파이썬 풀이 (0) | 2020.02.28 |
[백준 1697 숨바꼭질 ] 파이썬 (0) | 2020.02.27 |