백준 2178 미로 탐색 C++
- C
- 2023. 4. 5.
백준 2178 미로 탐색
백준 2178번 "미로 탐색" 문제의 자세한 내용은 글 하단의 문제 링크를 참고하세요.
![](https://blog.kakaocdn.net/dn/8Wv2Q/btr8lN5JFKE/MA12wTERN9kF7XgkqwL9C0/img.png)
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;
}
실행
위의 코드를 예제의 입력을 넣어 실행했을 때의 결과입니다.
https://www.acmicpc.net/problem/2178
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
'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 |