๋ฌธ์ :
๋ถ์ :
์ด ๋ฌธ์ ๋ ๊ฒฝ๋ก ํ์ ๋ฌธ์ ์ด๋ค. DFS, BFS ๋ ์ค ์๋ฌด๊ฑฐ๋ ํ์ด๋ ์๊ด ์์ด ๋ณด์ธ๋ค. ๋๋ BFS ์ฐ์ต์ ์ํด BFS ๋ฐฉ์์ผ๋ก ํ์๋ค. cin ์ ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก input์ ๋ฐ๋ ๊ฒ ๊ฐ์์ scanf์ ๋์์ ๋ฐ์๋ค. cin ์ผ๋ก ํ ์์๋ ๋ฐฉ๋ฒ ์๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๐ฅบ
2์ฐจ์ ํ๋ ฌ์ ๊ฐ์ด 1 (์ง๋๊ฐ ์์๋ ์นธ) ์ธ๊ฒฝ์ฐ true๋ก ๋ด์๊ณ ์๋๋ฉด false๋ก ๊ฐ์ ์ด๊ธฐํ ํ์๋ค.
์ด ๋ฌธ์ ๋ input ๊ฐ์ด 0,0 ์ผ๋ ๋ชจ๋ 1์ด์ด์ start๋ฅผ 0,0 ์ผ๋ก ๊ณ ์ ์์ผ ํ๋๋ฐ ๋ค๋ฅธ ๋ฌธ์ ํ๋์๋ 0,0์ด 1์ธ์ง ํ์ธ ํ ๋ค์ ๊ฐ ์ ์๋ ๊ธธ์ ์ฐพ์ผ๋ฉด ๊ทธ๋ start๊ฐ์ผ๋ก ๋ฃ์ด์ค์ผ๊ฒ ๋ค
๋จผ์ queue์ ์ฐพ์ ์ขํ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ up down left right๋ฅผ ๋๋ฉด์ 1์ด ์๋ค๋ฉด ๊ทธ๋ฆฌ๊ณ visitํ ์ฅ์๊ฐ ์๋๋ผ๋ฉด ๋ค์ q์ push ํ๋ฉฐ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ค. visit์ ๊ฐ์ ๋์ ์ํจ ๋ค ๊ทธ ๊ฐ์ ์ธ์๋ก ์ ๋ฌํ๋ค. ์ด์ํ๊ฒ cnt ๋ณ์๋ก ๊ฐ์ ์ฆ๊ฐ์ํค๋ฉด ์๋๋ค.. ๋ญ๊น ํ๋์ฉ ์ ๊ฒ ๋์จ๋ค
c++ ์ฝ๋ :
//
// 2178_miro.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/02/13.
//
#include <stdio.h>
#include <cstdio>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
#define MAX 100
int visit[MAX][MAX];
bool map[MAX][MAX];
int N, M;
int dx[] = { 0, 0, 1, -1 }; //up down left right
int dy[] = { 1, -1, 0, 0 };
int miro_bfs(pair<int, int> start){
//memset(visit, false, sizeof(visit));
visit[start.second][start.first] = true;
queue<pair<int,int>>q;
q.push(make_pair(start.second, start.first));
while (!q.empty()) {
int y = q.front().first;
int x = q.front().second;
//cout << y << " " << x << endl;
q.pop();
for(int i = 0; i < 4; i++){
int nx = x + dx[i];
int ny = y + dy[i];
if(nx >= 0 && ny >= 0 && ny < N && nx < M){
if(visit[ny][nx] == false && map[ny][nx]){ // ๋ฐฉ๋ฌธ x ์ด๊ณ ๊ฐ ์ ์๋ ๊ธธ์ด๋ฉด
visit[ny][nx] = visit[y][x] + 1;
q.push(make_pair(ny, nx));
}
}
}
}
return visit[N-1][M-1];
}
int main(){
cin >> N >> M;
//cout << N << M;
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
int a;
scanf("%1d", &a);
if(a == 1){
map[i][j] = true;
}else{
map[i][j] = false;
}
}
}
//input ํ์ธ
// for(int i = 0; i < N; i++){
// for(int j = 0; j < M; j++){
// cout << map[i][j] << " " ;
// }
// cout << endl;
// }
pair<int, int> start = make_pair(0, 0);
cout << miro_bfs(start) << endl;
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2660 ํ์ฅ ๋ฝ๊ธฐ Floyd Warshall (0) | 2021.02.18 |
---|---|
[๋ฐฑ์ค] 11403 ๊ฒฝ๋ก ์ฐพ๊ธฐ Floyd Warshall (0) | 2021.02.18 |
[๋ฐฑ์ค] 1931 ํ์์ค ๋ฐฐ์ (0) | 2021.02.17 |
[๋ฐฑ์ค] 19598 ์ต์ ํ์์ค ๊ฐ์ (0) | 2021.02.17 |
[๋ฐฑ์ค] 10818 ์ต์, ์ต๋ (0) | 2021.02.16 |
๋๊ธ