S E P H ' S

[Python] BJ.1261 알고스팟 본문

Algorithm/BackJoon

[Python] BJ.1261 알고스팟

yoseph0310 2021. 9. 7. 23:49
 

1261번: 알고스팟

첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미

www.acmicpc.net

from collections import deque

dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

m, n = map(int, input().split())
maze = [list(map(int, input())) for _ in range(n)]
crush = [[-1]*m for _ in range(n)]

q = deque()
q.append((0, 0))
crush[0][0] = 0
while q:
    x, y = q.popleft()
    for d in range(4):
        nx = x + dx[d]
        ny = y + dy[d]
        if 0 <= nx < n and 0 <= ny < m:
            if crush[nx][ny] == -1:
                if maze[nx][ny] == 0:
                    crush[nx][ny] = crush[x][y]
                    q.appendleft((nx, ny))
                else:
                    crush[nx][ny] = crush[x][y] + 1
                    q.append((nx, ny))

print(crush[n-1][m-1])

 

'Algorithm > BackJoon' 카테고리의 다른 글

[Java] BJ.10989 수 정렬 3  (0) 2022.06.13
[Python] BJ.2609 최대공약수와 최소공배수  (0) 2021.12.27
[Python] 13300 방배정  (0) 2021.06.20
[Python] 10163 색종이  (0) 2021.06.20
[Python] 1436 영화감독 숌  (0) 2021.06.16