Algorithm (PS)

[백준] 2178 미로탐색 (BFS 풀이)

minjiwoo 2022. 2. 5. 10:54
728x90

BFS로 최단거리를 구하면 되는 문제이다. 

https://www.acmicpc.net/problem/2178

 

2178번: 미로 탐색

첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.

www.acmicpc.net

부수면서 이동하기 문제의 쉬운 버전이다 ㅎㅎ 

이제 이런 간단한 그래프 문제는 한번 시도만에 바로 맞다니 ㅠㅠ 감격스러운걸...!

from collections import deque

n, m = map(int, input().split())
graph = []
for i in range(n):
    graph.append(list(map(int, input())))

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

def bfs():
    dist = [[0] * m for _ in range(n)]
    q = deque()
    q.append((0,0)) # start
    dist[0][0] = 1
    while q:
        x, y = q.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < n and 0 <= ny < m and dist[nx][ny] == 0 and graph[nx][ny] == 1:
                dist[nx][ny] = dist[x][y] + 1
                q.append((nx, ny))
    return dist[n-1][m-1]

print(bfs())
728x90