게으른카르

백준 2178 미로 탐색 C++

C
2023. 4. 5. 20:08

백준 2178 미로 탐색

백준 2178번 "미로 탐색" 문제의 자세한 내용은 글 하단의 문제 링크를 참고하세요.

2178번 문제에 주어지는 입력 및 예시

입력: 

4 6
101111
101010
101011
111011

출력:

15

코드

백준 2178번 "미로 탐색" 문제의 코드입니다.

#include <bits/stdc++.h>
using namespace std;
struct Node{int y,x,cnt;}node;
int DirectionY[4]={-1,0,1,0};//위 오 아 왼 
int DirectionX[4]={0,1,0,-1};
int main(){
	int n,m;
	queue<Node> q;
	cin>>n>>m;
	string a[100];
	for(int i=0;i<n;i++) cin>>a[i];
	q.push({0,0,1});
	a[0][0]='2'; //visited
	while(!q.empty()){
		node=q.front(); q.pop();
		for(int i=0;i<4;i++){
			int dy=node.y+DirectionY[i];
			int dx=node.x+DirectionX[i];
			if(dy<0||dy>=n||dx<0||dx>=m) continue;//오버플로우 체크. 
			if(a[dy][dx]=='2'||a[dy][dx] == '0' ) continue;//벽OR방문 
            if( dx == m-1 && dy == n-1 ){
            	cout<<node.cnt+1;
				return 0;
			}	    
			a[dy][dx]='2';
			q.push({dy,dx,node.cnt+1});
		}
	} 	
	return -1;
}

실행

위의 코드를 예제의 입력을 넣어 실행했을 때의 결과입니다.

 

반응형

'C' 카테고리의 다른 글

백준 1012 유기농 배추 C++  (0) 2023.04.06
백준 2920 음계 C++  (0) 2023.04.06
백준 2475 검증수 C++  (0) 2023.04.05
백준 1157 단어 공부 C++  (0) 2023.04.05
백준 2941 크로아티아 알파벳 C++  (0) 2023.04.05

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band