-
[Algorithm] 프로그래머스 게임 맵 최단거리 - C++, BFS쾌락없는 책임 (공부)/알고리즘 문제풀이 2022. 10. 13. 17:29반응형
#include <vector> #include <queue> using namespace std; const int moveX[] = { 0, 0, 1, -1 }; const int moveY[] = { 1, -1, 0, 0 }; bool visit[101][101]; int solution(vector<vector<int> > maps) { int n = maps.size(); int m = maps[0].size(); queue<pair<pair<int, int>, int>> q; q.push({{0, 0}, 1}); while (!q.empty()){ int curY = q.front().first.first; int curX = q.front().first.second; int curCount = q.front().second; q.pop(); if(curY == n-1 && curX == m-1) return curCount; for(int i = 0; i < 4; i++){ int nextY = curY + moveY[i]; int nextX = curX + moveX[i]; if(nextY < 0 || nextX < 0 || nextY >= n || nextX >= m) continue; if(maps[nextY][nextX] == 0) continue; if(visit[nextY][nextX]) continue; visit[nextY][nextX] = true; q.push({{nextY, nextX}, curCount+1}); } } return -1; }
간단한 BFS 문제인데 왜 이전에는 못풀었을까? 생각했는데 생각해보니 시작 지점도 1칸을 지난거라 첫 큐에 넣어주는 count 값이 1이 되어야 합니다.
반응형'쾌락없는 책임 (공부) > 알고리즘 문제풀이' 카테고리의 다른 글
[Algorithm] 프로그래머스 부대복귀 - C++, BFS (0) 2022.11.11 [Algorithm] 백준 14500 테트로미노 - C++, DFS (0) 2022.10.21 [Algorithm] 프로그래머스 옹알이 - C++ (0) 2022.10.13 [Algorithm] 백준 2468 안전 영역 - C++, DFS, BFS (1) 2022.10.11 [Algorithm] 프로그래머스 할인행사 - C++, unordered_map (0) 2022.10.11