알고리즘

프로그래머스 - 안전지대

계양 꿀주먹 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의 갯수를 파악하여 반환합니다.