๋ฌธ์
1์ ์ด๋ํ ์ ์๋ ์นธ, 0์ ์ด๋ํ ์ ์๋ ์นธ์ ๋ํ๋ธ๋ค.
(1,1)์์ ์ถ๋ฐํ์ฌ (N,M)์ ์์น๋ก ์ด๋ํ ๋ ์ง๋์ผ ํ๋ ์ต์ ์นธ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ ์์ฑํ์์ค.
์ ๋ ฅ 1
4 6
101111
101010
101011
111011
์ถ๋ ฅ 1
15
์ฝ๋
#include<iostream>
#include<queue>
#include<algorithm>
#define MAX 101
using namespace std;
int MAP[MAX][MAX];
int visited[MAX][MAX];
int dist[MAX][MAX];
int arrow[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };
int N, M;
pair<int, int> startP, endP;
queue < pair<int, int>> Q;
void BFS() {
Q.push(make_pair(startP.first, startP.second));
dist[startP.first][startP.second]++;
visited[startP.first][startP.second] = 1;
while (!Q.empty()) {
int y = Q.front().first;
int x = Q.front().second;
Q.pop();
//์ข์ฐ์์๋ ํ์
for (int i = 0; i < 4; i++) {
int ny = y + arrow[i][0];
int nx = x + arrow[i][1];
if ((nx >= 0 &&nx < M) && (ny >= 0 && ny < N)
&& MAP[ny][nx] == 1 &&!visited[ny][nx]) {
visited[ny][nx] = 1;
Q.push(make_pair(ny, nx));
dist[ny][nx] = dist[y][x] + 1;
}
}
}
cout << dist[endP.first-1][endP.second-1];
}
void input() {
string num;
for (int i = 0; i < N; i++) {
cin >> num;
for (int j = 0; j < M; j++) {
MAP[i][j] = num[j]-'0';
}
}
}
int main() {
cin.tie(NULL); cout.tie(NULL); ios::sync_with_stdio(false);
int tmp;
cin >> N>>M;
startP = make_pair(0, 0);
endP = make_pair(N, M);
input();
BFS();
return 0;
}
*๊ฐ๋จํ ํด์ค*
์ input ํจ์์์ cin์ ํตํด MAP์ ๋ฐ์์ต๋๋ค.
์ฃผ์ํ ์ ์ ํ ์ค๋น ๋ถ์ด์๋ ์ํ๋ก ๋ฐ์์์ cin์ผ๋ก ๋ฐ์ ๋ค์ ๋์ด์ ์ ์ฅํด์ฃผ์ด์ผํฉ๋๋ค.
void input() {
string num;
for (int i = 0; i < N; i++) {
cin >> num;
for (int j = 0; j < M; j++) {
MAP[i][j] = num[j]-'0';
}
}
}
string์ผ๋ก ๋ฐ์ ๋ค์ string์์ ์ธ์๋ก ์ ๊ทผํด์ฃผ๋ฉด char ํ์ด์ฌ์ charํ์ int๋ก ๋ฐ๊พธ๋ ค๋ฉด '0'์ ์ซ์๋ฅผ ๋นผ์ฃผ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ค์ BFS ํ์์ ํตํด ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ์์ฃผ๋ฉด ๋๋๋ฐ BOJ 6087๋ฒ ๋ ์ด์ ํต์ ๊ณผ ๋ฌธ์ ๊ฐ ๋งค์ฐ ํก์ฌํฉ๋๋ค.
https://dana3711.tistory.com/90
๋ค๋ง ๋ค๋ฅธ์ ์ ๋ชฉํ ์ง์ ๊น์ง ๊ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ๋น์ฉ์ ์ถ๋ ฅํด์ผํ๋ค๋ ์ ์ ๋๋ค. ๋ฐ๋ผ์
if ((nx >= 0 &&nx < M) && (ny >= 0 && ny < N)&& MAP[ny][nx] == 1 &&!visited[ny][nx])
{
visited[ny][nx] = 1;
Q.push(make_pair(ny, nx));
dist[ny][nx] = dist[y][x] + 1;
}
4๋ฐฉํฅ ํ์์ ํ ๋ ๋ง์ฝ ๋งต ์์ ์๊ณ ((nx >= 0 &&nx < M) && (ny >= 0 && ny < N)), ๊ทธ ์นธ์ด ์ด๋ํ ์ ์๋ ์นธ์ด๋ผ๋ฉด(MAP[ny][nx] == 1) ํด๋น ์นธ์ ๋ฐฉ๋ฌธํ์ง ์์์ ๋
ํด๋น ์นธ์ผ๋ก ์๋ฆฌ๋ฅผ ์ด๋ํ๊ณ ๊ฐ๋ ๋น์ฉ์ +1 ํด์ค๋๋ค.
*์ด ๋ฐฉ๋ฒ๋ง์ด ๋ง๋ ์ ๋ต์ ์๋๋๋ค.
ํจ์ฌ ์ข๊ณ ๋น ๋ฅธ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ์๋ ๋ถ๋ค ํ์ดํ ! '0'/*
'์๊ณ ๋ฆฌ์ฆ > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] BOJ 6087๋ฒ: ๋ ์ด์ ํต์ (0) | 2022.06.28 |
---|---|
[C++] BOJ 2749๋ฒ: ํผ๋ณด๋์น ์ 3 (0) | 2022.06.20 |
[C++] BOJ 2244๋ฒ: ๋ฏผ์ฝ์ฐ์คํค ํฉ (0) | 2022.06.13 |
[C++] BOJ 2933๋ฒ: ๋ฏธ๋ค๋ (0) | 2022.06.13 |
[C++] BOJ 1655๋ฒ: ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์ (0) | 2022.06.08 |