알고리즘
프로그래머스 - 안전지대
계양 꿀주먹
2024. 4. 5. 20:54
class Solution {
public int solution(int[][] board) {
int answer = 0;
for(int i = 0; i < board.length; i++) {
for(int j = 0; j < board.length; j++) {
if(board[i][j] == 1) danger(board, i, j);
}
}
for(int i = 0; i < board.length; i++) {
for(int j = 0; j < board.length; j++) {
if(board[i][j] == 0) answer++;
}
}
return answer;
}
public void danger(int[][] board, int x, int y) {
for(int i = -1; i <= 1; i++) {
for(int j = -1; j <= 1; j++) {
if(x + i >= 0 && x + i <= board.length - 1 && y + j >= 0 && y + j <= board.length - 1) {
if(board[x + i][y + j] == 0) board[x + i][y + j] = 2;
}
}
}
}
}
for문을 이용해 폭탄의 위치를 탐색하여, 위치에서 각 위험 지역을 체크합니다.
x, y 좌표의 -1 ~ 1 사이의 값이 배열 안에 위치해 있는지 체크 후 안전 지역이라면 위험 지역으로 바꾸어 줍니다.
후에, 배열을 다시 탐색해 0의 갯수를 파악하여 반환합니다.