*문제 출처는 프로그래머스에 있습니다.
문제 제목: 안전지대 (0단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120866
문제 설명
나의 풀이
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> board) {
int answer = 0;
int n = board.size();
int m = board[0].size();
int check = 0;
vector<vector<int>> bfs{ {-1, 0}, {-1, 1}, {-1, -1}, {0, 0}, {0, 1}, {0, -1}, {1, 0}, {1, 1}, {1, -1} };
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
for (vector<int> k : bfs) {
int ni = i + k[0];
int nj = j + k[1];
if (ni >= 0 && ni < n && nj >= 0 && nj < m && board[ni][nj] == 1) {
check++;
break;
}
}
}
}
answer = m * n - check;
return answer;
}
n * n 배열 하나씩 돌아다니면서 총 9개의 공간을 탐색하여 폭탄이 있으면 check에 1증가 시켜서 전체 공간에서 check를 빼서 풀었다.
※ 알아야 할 것
벡터에서는 음수의 인덱스 이동을 허용하지 않는다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 바탕화면 정리 / C++ (0) | 2024.03.05 |
---|---|
Programmers / 기능개발 / C++ (0) | 2024.03.04 |
Programmers / 의상 / C++ (0) | 2024.02.27 |
Programmers / 프로세스 / C++ (0) | 2024.02.27 |
Programmers / H-Index / C++ (0) | 2024.02.26 |