📝 문제
💻 코드
// #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차원 배열에서 '행'과 '열'을 어떻게 처리해야할지 몰랐는데 이번에 배웠다.
왜 혼자만 앞서가세요...... 가치가욥