-
[백준] 미로 탐색알고리즘/백준 2021. 8. 9. 17:12
풀이
BFS을 활용해서 풀면 방문하는 노드는 자연스럽게 최소 경로가 됩니다. 방문할 때마다 거리를 계산해주면 됩니다.
코드
#include <cstdio> #include <queue> using namespace std; int main() { int N, M; scanf("%d%d", &N, &M); int row[] = { 0, 1, 0, -1 }; int col[] = { 1, 0, -1, 0 }; char temp[100]; int map[102][102]; int dist[102][102]; bool visited[102][102]; for (int i = 1; i <= N; ++i) { scanf("%s", temp); for (int j = 0; j < M; ++j) { dist[i][j+1] = 1; map[i][j + 1] = temp[j] - '0'; } } queue<pair<int, int>> q; q.push({ 1, 1 }); visited[1][1] = true; while (!q.empty()) { auto [r, c] = q.front(); if (r == N && c == M) break; q.pop(); for (int i = 0; i < 4; ++i) { auto rr = r + row[i]; auto cc = c + col[i]; if (visited[rr][cc] == false && map[rr][cc]) { visited[rr][cc] = true; dist[rr][cc] = dist[r][c] + 1; q.push({ rr, cc }); } } } printf("%d", dist[N][M]); }
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 바이러스 (0) 2021.08.10 [백준][2667번] 단지번호 붙이기 (0) 2021.08.09 [백준] 1로 만들기 (0) 2021.07.11 [백준] 결혼식(5567) (0) 2019.08.14 [백준] 트리(1068) (0) 2019.08.14