https://www.acmicpc.net/problem/2178
๋ฌธ์
N×Mํฌ๊ธฐ์ ๋ฐฐ์ด๋ก ํํ๋๋ ๋ฏธ๋ก๊ฐ ์๋ค.
1 | 0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 1 |
๋ฏธ๋ก์์ 1์ ์ด๋ํ ์ ์๋ ์นธ์ ๋ํ๋ด๊ณ , 0์ ์ด๋ํ ์ ์๋ ์นธ์ ๋ํ๋ธ๋ค. ์ด๋ฌํ ๋ฏธ๋ก๊ฐ ์ฃผ์ด์ก์ ๋, (1, 1)์์ ์ถ๋ฐํ์ฌ (N, M)์ ์์น๋ก ์ด๋ํ ๋ ์ง๋์ผ ํ๋ ์ต์์ ์นธ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ํ ์นธ์์ ๋ค๋ฅธ ์นธ์ผ๋ก ์ด๋ํ ๋, ์๋ก ์ธ์ ํ ์นธ์ผ๋ก๋ง ์ด๋ํ ์ ์๋ค.
์์ ์์์๋ 15์นธ์ ์ง๋์ผ (N, M)์ ์์น๋ก ์ด๋ํ ์ ์๋ค. ์นธ์ ์ ๋์๋ ์์ ์์น์ ๋์ฐฉ ์์น๋ ํฌํจํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ ์ ์ N, M(2 ≤ N, M ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ M๊ฐ์ ์ ์๋ก ๋ฏธ๋ก๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ์๋ค์ ๋ถ์ด์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ง๋์ผ ํ๋ ์ต์์ ์นธ ์๋ฅผ ์ถ๋ ฅํ๋ค. ํญ์ ๋์ฐฉ์์น๋ก ์ด๋ํ ์ ์๋ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
ํ์ด
BFS ํ์ ์ก์๋๊ณ
[๐ Baaaaaarking/0x09๊ฐ - BFS] - [BOJ S1][C++] ๋ฐฑ์ค 1926๋ฒ : ๊ทธ๋ฆผ
vis ๋ก ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ง ํ์ํ๋๊ฒ์ dis ๋ก ํด๋น ์ง์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ํ์ํ๋ค
(1) ์ฒ์ ์ด๊ธฐํ ํ ๋ ์์ ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ -1 ๋ก ํด๋ฌ์ผ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ ๋์์ ์ฒดํฌ ๊ฐ๋ฅ
๋งจ์ฒ์ ํ๋ ธ์ต๋๋ค๊ฐ ๋์์ ์ด๋ฆฌ๋ฅ์ ํ๋๋ฐ
์ ๋ ฅ์ ๋ฐ์ ๋ ๊ณต๋ฐฑ ์์ด ๋ฐ๊ธฐ ๋๋ฌธ์ string ์ผ๋ก ์ ๋ ฅ๋ฐ์๋ค
(2) board ๊ฐ char ์ธ๊ฑธ ์์ง ๋ง๊ณ 0 ์ด ์๋ '0' ์ผ๋ก ์ ์ ๋ ฅ๋ฐ์
// Authored by : seondal
// ํ์ด : https://whkakrkr.tistory.com/
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <queue>
using namespace std;
string board[101];
int dis[101][101];
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
int main() {
// ์
๋ ฅ
int n, m;
cin >> n >> m;
for(int i=0; i<n; i++) cin >> board[i];
// (1) dis ์ด๊ธฐํ
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
dis[i][j] = -1;
// ํ์ด
queue<pair<int, int>> q;
q.push({0,0});
dis[0][0] = 0;
while(!q.empty()){
pair<int, int> cur = q.front();
q.pop();
for(int dir=0; dir<4; dir++){
int x = cur.first + dx[dir];
int y = cur.second + dy[dir];
if(x < 0 || x >= n || y < 0 || y >= m) continue;
if(board[x][y] == '0' || dis[x][y] > 0) continue; // (2)
dis[x][y] = dis[cur.first][cur.second] + 1;
q.push({x,y});
}
}
// ์ถ๋ ฅ
cout << dis[n-1][m-1] + 1;
return 0;
}
/*
*/
'๐ Baaaaaarking > 0x09๊ฐ - BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ G5][C++] ๋ฐฑ์ค 7569๋ฒ: ํ ๋งํ (0) | 2022.03.10 |
---|---|
[BOJ G5][C++] ๋ฐฑ์ค 7576๋ฒ: ํ ๋งํ (0) | 2022.03.09 |
[BOJ G5][C++] ๋ฐฑ์ค 10026๋ฒ: ์ ๋ก์์ฝ (0) | 2022.03.08 |
[BOJ S2][C++] ๋ฐฑ์ค 1012๋ฒ : ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.03.06 |
[BOJ S1][C++] ๋ฐฑ์ค 1926๋ฒ : ๊ทธ๋ฆผ (0) | 2022.03.06 |