본문 바로가기

알고리즘 문제 풀이/Baekjoon

미로 탐색 - 2178 (C++)

반응형
SMALL
#include <stdio.h>
#include <deque>

using namespace std;

deque<int> dqi;
deque<int> dqj;
deque<int> cnt;

int y, x;
int y_[4] = { 0, 0, 1, -1 };
int x_[4] = { 1, -1, 0, 0 };

int n, m;

int map[100][100];
int visited[100][100];

int result;

int main(void) {
	scanf("%d %d", &n, &m);

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			scanf("%1d", &map[i][j]);
			visited[i][j] = 1;
		}
	}

	dqi.push_back(0);
	dqj.push_back(0);
	visited[0][0] = 0;
	cnt.push_back(1);

	while (1) {
		y = dqi.front();
		x = dqj.front();
		result = cnt.front();
		dqi.pop_front();
		dqj.pop_front();
		cnt.pop_front();
		if (y == n - 1 && x == m - 1) break;
		for (int k = 0; k < 4; k++) {
			if (0 <= y + y_[k] && y + y_[k] < n && 0 <= x + x_[k] && x + x_[k] < m && map[y + y_[k]][x + x_[k]] == 1 && visited[y + y_[k]][x + x_[k]] == 1) {
				visited[y + y_[k]][x + x_[k]] = 0;
				dqi.push_back(y + y_[k]);
				dqj.push_back(x + x_[k]);
				cnt.push_back(result + 1);
			}
		}
	}
	printf("%d", result);
}
반응형
LIST

'알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글

10809 - 알파벳 찾기  (0) 2019.08.11
11720 - 숫자의 합 (C)  (0) 2019.08.11
팩토리얼 - 10872 (C)  (0) 2019.06.22
단지번호붙이기 - 2667번 (Python)  (0) 2019.06.21
DFS와 BFS - 1260번 (Python)  (0) 2019.06.21