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

leeact·2023년 4월 29일
1

[백준/c++]

목록 보기
4/24
post-thumbnail

📝 문제

💻 코드

// #include<vector>
// #include<iostream>
#include<bits/stdc++.h>
using namespace std;

int solution(vector<vector<int> > maps)
{
    int answer = 0;
    int row = maps.size();
    int col = maps[0].size();
    
    // bfs로 풀어보기!
    // 1. 그래프 구성은 되어있다.
    struct Node {
        int row;
        int col;
    };
    
    int used[101][101] = {0,};
    // 2. 큐 구성
    queue<Node> q;
    q.push({0,0});
    // 방문체크
    used[0][0] = 1;
    
    while(!q.empty()){
        Node now = q.front();
        q.pop();
        // answer = now.rrow;
        if (now.row == row-1 && now.col == col-1){
            answer = used[row-1][col-1];
            break;
        }
        
        int dr[] = {0, 0, 1, -1};
        int dc[] = {1, -1, 0, 0};
        
        for (int i = 0; i<4; i++) {
            int nextRow = now.row + dr[i];
            int nextCol = now.col + dc[i];
            

            // 범위를 벗어났을때
            if (nextRow < 0 || nextCol < 0 || nextRow >= row || nextCol >= col) continue;
            // 이미 방문했을때
            if (used[nextRow][nextCol]) continue;
            // 벽에 막혔을때
            if (maps[nextRow][nextCol] == 0) continue;
            
            used[nextRow][nextCol] = used[now.row][now.col] + 1;
            q.push({nextRow, nextCol});
        }
        
        
    }
    
    if (!answer){
        answer = -1;
    }
    
    return answer;
}

💡 Point

  • #include <bits/stdc++.h>을 사용하면 모든 라이브러리를 사용 가능하다
  • 2차원 배열에서 '행'과 '열'을 어떻게 처리해야할지 몰랐는데 이번에 배웠다.

2개의 댓글

comment-user-thumbnail
2023년 5월 1일

왜 혼자만 앞서가세요...... 가치가욥

1개의 답글