λ¬Έμ
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'/*