728x90
https://school.programmers.co.kr/learn/courses/30/lessons/1844
코드
#include <bits/stdc++.h>
using namespace std;
int mp[104][104], visited[104][104],y,x,n,m;
const int dy[]={-1,0,1,0};
const int dx[]={0,1,0,-1};
void bfs(){
visited[0][0]=1;
queue<pair<int,int>> q;
q.push({0,0});
while(q.size()){
tie(y,x)=q.front(); q.pop();
for(int i=0;i<4;i++){
int ny = y+dy[i];
int nx = x+dx[i];
if(ny<0||ny>=m||nx<0||nx>=n||visited[ny][nx]||mp[ny][nx]==0) continue;
visited[ny][nx]=visited[y][x]+1;
q.push({ny,nx});
}
}
}
int solution(vector<vector<int> > maps)
{
int answer = 0;
//1. 맵 만들기
m=maps.size(); n=maps[0].size();
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
mp[i][j]=maps[i][j];
}
}
//2. bfs 수행
bfs();
answer= (visited[m-1][n-1]==0?-1:visited[m-1][n-1]);
return answer;
}
728x90
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 문제풀이 (0) | 2023.03.17 |
---|---|
프로그래머스 단어변환 (0) | 2023.03.17 |
프로그래머스:네트워크 (0) | 2023.03.17 |
프로그래머스: 타겟 넘버 (0) | 2023.03.17 |
프로그래머스: 카펫 (0) | 2023.03.16 |