728x90
https://www.acmicpc.net/problem/2178
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
당연히 고민하지 않고 BFS로 풀었다.
지나온 길을 기록하기 위해 N x M 크기의 visited 배열을 사용했다.
import sys
N, M = map(int, sys.stdin.readline().split())
miro = [list(map(int, sys.stdin.readline().strip())) for _ in range(N)]
visited = [[float('inf') for _ in range(M)] for _ in range(N)]
bfs = [[0, 0, 0]]
result = -1
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
while bfs:
count, x, y = bfs.pop(0)
if x == N - 1 and y == M - 1:
result = count
break
for i in range(4):
if 0 <= x + dx[i] < N and 0 <= y + dy[i] < M and miro[x + dx[i]][y + dy[i]] == 1 and visited[x + dx[i]][y + dy[i]] > count + 1:
bfs.append([count + 1, x + dx[i], y + dy[i]])
visited[x + dx[i]][y + dy[i]] = count + 1
print(result + 1)
'알고리즘 > 그래프' 카테고리의 다른 글
백준 7576 토마토 (Python) (0) | 2024.02.11 |
---|---|
백준 2468 안전 영역 (Python) (1) | 2024.02.10 |
백준 1012 유기농 배추 (Python) (0) | 2024.02.10 |
백준 4963 섬의 개수 (Python) (0) | 2024.02.10 |
백준 1260 DFS와 BFS (Python) (0) | 2024.02.08 |