프로그래머스[Level2] 게임 맵 최단거리 (BFS 알고리즘)

2026. 2. 19. 09:58·Coding Test/BFS

문제 설명
입출력 예시

 

 

------------------------------------------------------------------------------------------------------------------------------------------------

 

문제 접근 방법

 

1. 최단 경로를 찾으면서 모든 경로를 탐색해야 하므로  BFS 알고리즘을 사용하였습니다.

 

2. 문제 풀이 중 각 인덱스 초과의 경우 및 갔던 곳은 재방문 하지 않도록 해야 최단경로 이므로 길을 지나갈 때 마다 

    이전 "경로 비용 + 1"   을 하여 경로 비용을 계산하였습니다.

 

------------------------------------------------------------------------------------------------------------------------------------------------

 

코드 

 

#include <vector>
#include <deque>
using namespace std;

int solution(vector<vector<int> > maps)
{
    int answer = 0;
    
    
    int iTargetRow = maps.size()-1;
    int iTargetCol = maps[0].size()-1;
    
    deque<pair<int,int>> m_deque; 
    m_deque.push_back({0,0});
    
    
    int dx[4] = {-1,1,0,0};
    int dy[4] = {0,0,-1,1};
    
    while(!m_deque.empty())
    {
        int row = m_deque.front().first;
        int col = m_deque.front().second; 
        
        m_deque.pop_front(); 
        
        // 동서남북 체크하고 -1 넣기
        
        // 이미 지나온 경로이거나 벽인경우 스킵
        for(int i=0; i<4; i++)
        {
            int Number_Row =  row+dx[i];
            int Number_Col =  col+dy[i];
                
            if( Number_Row < 0 || Number_Row >= maps.size()
                 || Number_Col < 0 || Number_Col >= maps[0].size()
                 || maps[Number_Row][Number_Col] == 0 
                 || maps[Number_Row][Number_Col] > 1)
            {
                continue; 
            }
            
            m_deque.push_back({Number_Row,Number_Col});
            maps[Number_Row][Number_Col] = maps[row][col] +1; 
            
            if( Number_Row == iTargetRow
               && Number_Col == iTargetCol)
            {
                return maps[Number_Row][Number_Col]; 
            }
            
        }
       
    }
    
    answer = -1; 
    
    return answer;
}

'Coding Test > BFS' 카테고리의 다른 글

백준 2667 "단지 번호 붙이기" [BFS 알고리즘]  (0) 2026.01.30
프로그래머스 [level3] 가장 먼 노드 ( BFS 알고리즘)  (0) 2025.11.13
백준 1012번, "유기농 배추" ( BFS 알고리즘 )  (0) 2025.11.13
프로그래머스 [Level3] 아이템 줍기  (0) 2025.11.11
프로그래머스 [level 2] 게임 맵 최단거리 - 1844 (BFS)  (0) 2025.11.05
'Coding Test/BFS' 카테고리의 다른 글
  • 백준 2667 "단지 번호 붙이기" [BFS 알고리즘]
  • 프로그래머스 [level3] 가장 먼 노드 ( BFS 알고리즘)
  • 백준 1012번, "유기농 배추" ( BFS 알고리즘 )
  • 프로그래머스 [Level3] 아이템 줍기
seonhwan2547
seonhwan2547
seonhwan2547 님의 블로그 입니다.
  • seonhwan2547
    seonhwan2547 님의 블로그
    seonhwan2547
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • Unreal Project (17)
        • Khazan 모작 프로젝트 (2)
        • Unreal Study (10)
        • Blueprint (5)
      • Directx11 Project (11)
        • Thymesia 팀 프로젝트 (8)
        • Kaku Ancient Seal 개인 프로젝트 (2)
        • Thymesia Animation Tool 개발 (0)
      • Algorithm (6)
        • Binary_Search (2)
        • Greedy (1)
        • Dynamic Programming (1)
        • A-star (1)
      • Coding Test (31)
        • Brutal Force (2)
        • Sort (5)
        • DFS (3)
        • Binary_Search (4)
        • BFS (6)
        • Hash (2)
        • Dynamic Programming (6)
        • Greedy (1)
        • BackTracking (1)
        • Binary_Tree (1)
      • STL Container (1)
        • unorded_set (0)
        • priority_queue (1)
      • C++ 공부 및 몰랐던점 (8)
        • Smart pointer (1)
      • Visual Studio 설정관련 공부 (1)
      • Console Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 블로그 소개
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Game Programming
    hash
    blueprint
    GameProgramming
    CodingTest
    Unreal Engine
    Unreal
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
seonhwan2547
프로그래머스[Level2] 게임 맵 최단거리 (BFS 알고리즘)