Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- SSAFY
- 큐
- 순열
- 재귀
- 백트래킹
- 시뮬레이션
- 세그먼트 트리
- 중복 순열
- 그리디
- 우선순위 큐
- 완전 탐색
- 비트마스크
- 문자열
- 분할 정복
- 스택
- 이분 탐색
- 피보나치 수
- 조합
- dfs
- MST
- 클래스
- 링크드리스트
- lis
- 크루스칼
- 빠른 입출력
- BFS
- 메모리풀
- DP
- Knapsack
- BeautifulSoup
Archives
- Today
- Total
작심 24/7
[백준] 2178번 미로 탐색 본문
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
각 위치까지 가는데 얼마나 걸리는지 저장하다가 그 위치가 N-1, M-1일 때 출력시키면 된다.
0,0부터 시작하기 때문에 i,j에 0,0부터 넣어주고
상하좌우를 검사하며 maze의 값이 1이고 방문하지 않은 곳인 x, y을 찾은 뒤
i, j의 값+1을 넣고 방문에 체크해주고 x, y를 큐에 넣어준다.
이 과정이 끝나면 큐를 pop시켜주고 front에 있는 값을 i, j로 만든 다음 반복한다.
#include <iostream>
#include <algorithm>
#include <queue>
#include <string>
using namespace std;
int maze[101][101] = { 0 }, visited[101][101] = { 0 }, res[101][101] = { 0 };
int dx[4] = { -1, 1, 0, 0 }, dy[4] = { 0, 0, -1, 1 }; //상 하 좌 우 순
int x, y, a, b, c, d, finish = 0;
queue <pair<int, int>> q;
void Bfs(int N, int M) {
int i = 0, j = 0;
while (1) {
for (int k = 0; k < 4; k++) {
x = i + dx[k], y = j + dy[k];
if (x >= 0 && x < N && y >= 0 && y < M && maze[x][y] == 1 && visited[x][y] == 0) {
res[x][y] = res[i][j] + 1;
visited[x][y] = 1;
if (x == N - 1 && y == M - 1) {
finish = 1;
break;
}
q.push(pair<int, int>(x, y));
}
}
if (finish) break;
q.pop();
i = q.front().first, j = q.front().second;
}
}
int main() {
int N, M;
cin >> N >> M;
string input;
for (int i = 0; i < N; i++) {
cin >> input;
for (int j = 0; j < input.size(); j++) {
maze[i][j] = input[j] - '0';
}
}
q.push(pair<int, int>(0, 0));
res[0][0] = 1;
visited[0][0] = 1;
Bfs(N, M);
cout << res[N - 1][M - 1];
return 0;
}
'백준' 카테고리의 다른 글
[백준] 1260번 DFS와 BFS (2) | 2020.06.15 |
---|---|
[백준] 7562번 나이트의 이동 (0) | 2020.06.15 |
[백준] 2644번 촌수계산 (0) | 2020.06.15 |
[백준] 9029번 정육면체 (0) | 2020.06.13 |
[백준] 2468번 안전 영역 (C++, JAVA) (0) | 2020.06.10 |
Comments