😒 그냥 딱 전형적인 BFS 문제였다. 무엇인가 함정같은 것도 없고 벽을 뿌시는 것도 없고 그냥 최단거리만 구하면 되는 문제였다.



BFS 문제를 풀때 처럼 풀어냈다.return 시킴.(최단거리기에 다른 돌아오는 값은 받을 필요가 없다.)BFS를 끝내고 나온 경우의 return -1을 해준다. #include<vector>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
int dy[4] = {1,-1,0,0};
int dx[4] = {0,0,1,-1};
int check[101][101];
int cnt [101][101];
int bfs(vector<vector<int> > maps)
{
queue<pair<int,int>>q;
q.push({0,0});
check[0][0]=1;
memset(cnt,10001, sizeof(cnt));
cnt[0][0]=1;
while(!q.empty())
{
int y = q.front().first;
int x = q.front().second;
q.pop();
if(y==maps.size()-1 && x == maps[0].size()-1) return cnt[maps.size()-1][maps[0].size()-1];
for(int i=0;i<4;i++)
{
int ny = y + dy[i];
int nx = x + dx[i];
if(ny >= maps.size() || nx >= maps[0].size() || ny <0 || nx<0) continue;
if(!check[ny][nx] && maps[ny][nx]==1)
{
q.push({ny,nx});
check[ny][nx]=1;
cnt[ny][nx] = min(cnt[ny][nx], cnt[y][x]+1);
}
}
}
return -1;
}
int solution(vector<vector<int> > maps)
{
int answer = 0;
answer = bfs(maps);
return answer;
}
이제 슬슬 3단계 풀어봐야겠다. 2단계는 너무 쉽다. 근데 이게 왜 2단계지