초고교급 희망

[프로그래머스][C++] 게임 맵 최단거리 본문

Algorithm/Programmers

[프로그래머스][C++] 게임 맵 최단거리

연모링 2023. 6. 3. 15:53
728x90
#include<vector>
#include<queue>
using namespace std;

int solution(vector<vector<int> > maps)
{
    int n = maps.size();
    int m = maps[0].size();
    vector<vector<int> > dist(n, vector<int>(m, -1));
    dist[0][0]= 1;
    
    queue<pair<int, int>> q;
    q.push({0, 0});
    
    int dx[4] = {-1, 0, 1, 0};
    int dy[4] = {0, 1, 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 nx = x + dx[i];
            int ny = y + dy[i];
            
            if(nx>= 0 && nx < n && ny >= 0 && ny < m && maps[nx][ny] == 1 && dist[nx][ny] == -1)
            {
                dist[nx][ny] = dist[x][y] + 1;
                q.push({nx, ny});
            }
        }
    }
    
    return dist[n - 1][m - 1];
}

 

BFS 연습하기 좋은 간단한 문제였습니다.

728x90

'Algorithm > Programmers' 카테고리의 다른 글

[프로그래머스][C++] 귤 고르기  (0) 2023.10.19
[프로그래머스][C++] 카펫  (2) 2023.06.03
[프로그래머스][C++] 타겟 넘버  (2) 2023.06.01
[프로그래머스][C++]삼총사  (0) 2023.06.01