1261๋ฒ: ์๊ณ ์คํ
์ฒซ์งธ ์ค์ ๋ฏธ๋ก์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ๊ฐ๋ก ํฌ๊ธฐ M, ์ธ๋ก ํฌ๊ธฐ N (1 ≤ N, M ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ๋ฏธ๋ก์ ์ํ๋ฅผ ๋ํ๋ด๋ ์ซ์ 0๊ณผ 1์ด ์ฃผ์ด์ง๋ค. 0์ ๋น ๋ฐฉ์ ์๋ฏธํ๊ณ , 1์ ๋ฒฝ์ ์๋ฏธ
www.acmicpc.net
#include <iostream>
#include <queue>
using namespace std;
/*
N,M์ ํต์์ ์ธ ์์น๋ก x,y๋ก ์ผ๋ค๊ฐ ๋ฐ๋๋ผ๋ ๊ฑธ ์์ ๋ฅผ ๋๋ฆฌ๋ค๊ฐ ์์๋ค. ๋ฌธ์ ๋ฅผ ์์ธํ๊ฒ ๋ณด์.
*/
int N,M;
int map[101][101];
int visited[101][101];
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
int bfs(int x,int y){
visited[y][x]=1;
priority_queue<pair<int,pair<int,int>>,vector<pair<int,pair<int,int>>>,greater<pair<int,pair<int,int>>>>pq;
pq.push({0,{y,x}});
while(!pq.empty()){
int block=pq.top().first;
int y=pq.top().second.first;
int x=pq.top().second.second;
if(x==M-1&&y==N-1){ //๋ชฉ์ ์ง์ธ (N,M)์ ๋๋ฌํ์ ๋ ์ฆ๋ฃ
return block;
}
pq.pop();
for(int i=0; i<4; i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=0&&nx<M&&ny>=0&&ny<N&&!visited[ny][nx]){ //๋งต์ ๋ฒ์๋ฅผ ๋์ด๊ฐ์ง ์๊ณ , ๋ฐฉ๋ฌธํ์ง ์์์๋
visited[ny][nx]=1; //๋ฐฉ๋ฌธ์ฒ๋ฆฌ
if(map[ny][nx]==0){
pq.push({block,{ny,nx}}); //๋ฒฝ์๋ถ์๊ณ ์ด๋
}
else{
pq.push({block+1,{ny,nx}}); //๋ฒฝ ํ๊ฐ ๋ถ์๊ณ ์ด๋
}
}
}
}
return 0;
}
int main(){
cin>>M>>N;
for(int i=0; i<N; i++){
for(int k=0; k<M; k++){
scanf("%1d",&map[i][k]);
}
}
cout<< bfs(0,0);
}
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 12813๋ฒ - ์ด์ง์ ์ฐ์ฐ (0) | 2021.11.02 |
---|---|
[๋ฐฑ์ค,c++] 12738๋ฒ - ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด3 (0) | 2021.11.02 |
[๋ฐฑ์ค,c++] 1264๋ฒ - ๋ชจ์์ ๊ฐ์ (0) | 2021.11.02 |
[๋ฐฑ์ค,c++] 12605๋ฒ - ๋จ์ด ์์ ๋ค์ง๊ธฐ (0) | 2021.11.02 |
[๋ฐฑ์ค,c++] 1260๋ฒ - DFS์ BFS (0) | 2021.11.02 |
[๋ฐฑ์ค,c++] 1259๋ฒ - ํฐ๋ฆฐ๋๋กฌ์ (0) | 2021.11.02 |
๋๊ธ