반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 2178 미로 탐색 본문

백준(Baekjoon) 문제

백준 2178 미로 탐색

huiung 2019. 2. 10. 23:46
반응형

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

문제와 채점은 위 사이트에서 확인 하실 수 있습니다

 

이 문제는 배열에 1 과 0 을 입력받고 1로만 이동 하며 끝점까지 이동하는데 지나야하는 최소의 칸 수를 찾는 문제이므로 bfs를 이용해서 풀면 해결되는 간단한 문제입니다.

 

다음은 코드입니다.

 

#include <iostream>
#include <queue>

using namespace std;

int N,M;
int maze[101][101];
queue<pair<int, int>> q;
int nextx[4] = {1, 0, -1, 0};
int nexty[4] = {0, 1, 0, -1};
int visited[101][101];
int num = 1;

void bfs() {
	q.push(make_pair(0, 0));
	visited[0][0] = 1;
	while(!q.empty()) {
		int len = q.size();
		
		for(int i = 0; i < len; i++) {
			for(int j = 0; j < 4; j++) {
				int x = q.front().first + nextx[j];
				int y = q.front().second + nexty[j];
				
				if(x < 0 || x >= N || y < 0 || y >= M)
					continue;
				
				if(x == N-1 && y == M-1) {
					num++;
					return;
				}
				
				if(!visited[x][y] && maze[x][y] == 1) {
					visited[x][y] = 1;
					q.push(make_pair(x, y));
				}
			}
			q.pop();
		}
		num++;
	}
		
}

int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	cin >> N >> M;
	
	for(int i = 0; i < N; i++) {
		string str;
		cin >> str;
		for(int j = 0; j < M; j++)
			maze[i][j] = str[j] - '0';
	}
	
	bfs();
	cout << num;
}
반응형

'백준(Baekjoon) 문제' 카테고리의 다른 글

백준 1847 스택 수열  (0) 2019.02.12
백준 11403 경로 찾기  (0) 2019.02.11
백준 5014 스타트링크  (0) 2019.02.10
백준 1012 유기농 배추  (0) 2019.02.10
백준 2583 영역 구하기  (0) 2019.02.09