프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이방법
BFS(너비 우선 탐색) 알고리즘을 이용해서 최단거리를 구할 수 있다.
#include <vector>
#include <queue>
using namespace std;
bool check[101][101] = {0};
int board[101][101] = {0};
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0 ,-1, 0};
queue<pair<int, int>> q;
int solution(vector<vector<int> > maps) {
int answer = 0;
int m = maps.size();
int n = maps[0].size();
q.push({0,0});
check[0][0] = true;
board[0][0] = 1;
while(!q.empty()) {
int x = q.front().first;
int y = q.front().second;
q.pop();
for(int i = 0; i < 4; i++) {
int curX = dx[i] + x;
int curY = dy[i] + y;
if(curX < 0 || curX >= m || curY < 0 || curY >= n) continue;
if(check[curX][curY]) continue;
if(!maps[curX][curY]) continue;
check[curX][curY] = true;
q.push({curX, curY});
board[curX][curY] = board[x][y] + 1;
}
}
if(!board[m-1][n-1]) return -1;
else return board[m-1][n-1];
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
[1차] 프렌즈4블록/C++ (0) | 2023.02.21 |
---|---|
롤케이크 자르기/C++ (0) | 2023.02.15 |
2개 이하로 다른 비트/C++ (0) | 2023.02.10 |
[3차] n진수 게임/C++ (0) | 2023.02.10 |
숫자 블럭/C++ (0) | 2023.02.08 |