반응형
https://leetcode.com/problems/matrix-cells-in-distance-order/description/
bfs 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
상, 하, 좌, 우에 해당하는 방향 dr, dc배열을 저장해줍니다. 방문여부를 확인하는 배열 ck를 선언해줍니다. 정답 변수 ans를 선언해줍니다.
📔 풀이과정
인접한 상, 하, 좌, 우 좌표에 해당하는 원소를 bfs로 탐색하며 ans에 push_back해줍니다.
📔 정답 출력 | 반환
ans를 반환해줍니다.
📕 Code
📔 C++
using pii = pair<int,int>;
class Solution {
public:
int dr[4] = {0, 0, 1, -1};
int dc[4] = {1, -1, 0, 0};
int ck[101][101];
vector<vector<int>> allCellsDistOrder(int rows, int cols, int rCenter, int cCenter) {
memset(ck,0,sizeof(ck));
vector<vector<int>> ans = {{rCenter, cCenter}};
queue <pii> q;
ck[rCenter][cCenter] = 1;
q.push({rCenter, cCenter});
while(q.size()) {
int r = q.front().first;
int c = q.front().second;
q.pop();
for(int i = 0; i < 4; i++) {
int nr = r + dr[i];
int nc = c + dc[i];
if (0 > nr || nr >= rows || 0 > nc || nc >= cols) continue;
if(ck[nr][nc]) continue;
ck[nr][nc] = 1;
ans.push_back({nr, nc});
q.push({nr, nc});
}
}
return ans;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > BFS' 카테고리의 다른 글
(C++, Python3) - 백준(BOJ) : 벽 부수고 이동하기 2 (1) | 2024.11.20 |
---|---|
(C++) - LeetCode (easy) 733. Flood Fill (0) | 2023.06.27 |
(C++) - LeetCode (easy) 637. Average of Levels in Binary Tree (0) | 2023.05.28 |
(C++) - 백준(BOJ) 2251 : 물통 (0) | 2022.06.30 |
(C++) - 백준(BOJ) 14248 : 점프 점프 (1) | 2022.06.25 |