JiSoo's Devlog

[백준 / 파이썬] 2178 미로 탐색 본문

코테준비

[백준 / 파이썬] 2178 미로 탐색

지숭숭숭 2024. 1. 22. 12:37

from collections import deque

n, m = map(int, input().split())
g = []

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

for _ in range(n):
    g.append(list(map(int, input())))

def bfs(x, y):
    q = deque()
    q.append((x, y))

    while q:
        x, y = q.popleft()

        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]

            if nx < 0 or nx >= n or ny < 0 or ny >= m:
                continue

            if g[nx][ny] == 0:
                continue

            if g[nx][ny] == 1:
                g[nx][ny] = g[x][y] + 1

                q.append((nx, ny))

    return g[n-1][m-1]

print(bfs(0, 0))

 

bfs를 사용해서 풀었다

dx, dy로 네 방향을 정의하고 deque를 생성

현재 위치에서 4가지 방향으로 위치를 확인하고 위치가 벗어나면 안 되기 때문에 조건을 추가해 줬다

g[nx][ny] == 0 이면 벽이기 때문에 진행하지 못하고 1이면 이동

처음에 입력받을 때 input().split()으로 하니까 런타임에러가 떴는데 split()을 지우니까 성공했다

728x90