ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 - 게임 맵 최단거리
    문제 풀이/프로그래머스 2023. 3. 10. 22:00
    반응형

    코딩테스트 고득점 Kit의 깊이/너비 우선 탐색(DFS/BFS)에 있는 Level 2 문제 게임 맵 최단거리이다. 이 문제는 기초적인 BFS 개념만 있으면 풀 수 있는 문제이다.

     

    #include <vector>
    #include <queue>
    #include <utility>
    using namespace std;
    
    int dy[] = {-1, 0, 1, 0};
    int dx[] = {0, -1, 0, 1};
    
    bool inRange(int y, int x, int n, int m)
    {
        if (y >= 0 && y < n && x >= 0 && x < m)
        {
            return true;
        }
        return false;
    }
    
    int bfs(int startY, int startX, vector<vector<int>>& maps)
    {
        int n = maps.size();
        int m = maps[0].size();
        vector<vector<int>> visited(n, vector<int>(m, 0));
        queue<pair<int, int>> q;
        
        visited[startY][startX] = 1;
        q.push(make_pair(startY, startX));
        
        while (!q.empty()) 
        {
            pair<int, int> temp = q.front();
            q.pop();
            
            if (temp.first == n - 1 && temp.second == m - 1)
            {
                return visited[temp.first][temp.second] + 1;
            }
            
            for (int i = 0; i < 4; i++)
            {
                int nextY = temp.first + dy[i];
                int nextX = temp.second + dx[i];
                
                if (inRange(nextY, nextX, n, m) && visited[nextY][nextX] == 0 &&
                   maps[nextY][nextX] == 1)
                {
                    visited[nextY][nextX] = visited[temp.first][temp.second] + 1;
                    q.push(make_pair(nextY, nextX));
                }
            }
        }
        
        return -1;
    }
    
    int solution(vector<vector<int> > maps)
    {
        int answer = 0;
        
        answer = bfs(0, 0, maps);
        
        if (answer > 0)
        {
            answer--;
        }
        
        return answer;
    }
    반응형

    '문제 풀이 > 프로그래머스' 카테고리의 다른 글

    프로그래머스 - 카펫  (0) 2023.03.12
    프로그래머스 - 소수 찾기  (2) 2023.03.12
    프로그래머스 - H-Index  (0) 2023.03.11
    프로그래머스 - 가장 큰 수  (0) 2023.03.11
    프로그래머스 - 더 맵게  (0) 2023.03.10
Designed by Tistory.