https://www.acmicpc.net/problem/2178
import sys
import collections
def Print(lst):
for i in lst:
for j in i:
print(j, end=' ')
print("")
print("")
def bfs(i, j):
visited = [[0 for _ in range(m)] for _ in range(n)]
x = [0, 0, 1, -1]
y = [1, -1, 0, 0]
queue = collections.deque([[i, j, 1]])
visited[i][j] = 1
while queue:
r, c, depth = queue.popleft()
for dir in range(4):
nR = r + x[dir]
nC = c + y[dir]
if 0 <= nR < n and 0 <= nC < m:
if nR == n-1 and nC == m-1:
return depth+1
if board[nR][nC] == 1 and not visited[nR][nC]:
visited[nR][nC] = 1
queue.append([nR, nC, depth+1])
# Print(visited)
if __name__ == '__main__':
n, m = map(int, sys.stdin.readline().split())
board = [[0 for _ in range(m)] for _ in range(n)]
for i in range(n):
tmp = sys.stdin.readline()[:-1]
for j in range(m):
board[i][j] = int(tmp[j])
#Print(board)
print(bfs(0, 0))
'알고리즘 > BFS와 DFS' 카테고리의 다른 글
14501번. 퇴사 (0) | 2020.04.17 |
---|---|
16236번. 아기 상어 (0) | 2020.04.13 |
13460번. 구슬 탈출 2 (0) | 2019.12.31 |
2468번. 안전 영역 (0) | 2019.12.30 |
11724번. 연결 요소의 개수 (0) | 2019.12.24 |