물음표 살인마의 개발블로그

알고리즘 문제/프로그래머스

안전지대

BEstyle 2022. 10. 15. 01:01

제한사항

  • board는 n * n 배열입니다.
  • 1 ≤ n ≤ 100
  • 지뢰는 1로 표시되어 있습니다.
  • board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다.

입출력 예

Board Result
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0]] 16
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 1, 0], [0, 0, 0, 0, 0]] 13
[[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]] 0

입출력 예 설명

입출력 예 #1

  • (3, 2)에 지뢰가 있으므로 지뢰가 있는 지역과 지뢰와 인접한 위, 아래, 좌, 우, 대각선 총 8칸은 위험지역입니다. 따라서 16을 return합니다.

입출력 예 #2

  • (3, 2), (3, 3)에 지뢰가 있으므로 지뢰가 있는 지역과 지뢰와 인접한 위, 아래, 좌, 우, 대각선은 위험지역입니다. 따라서 위험지역을 제외한 칸 수 13을 return합니다.

입출력 예 #3

  • 모든 지역에 지뢰가 있으므로 안전지역은 없습니다. 따라서 0을 return합니다.
  •  

import java.util.Arrays;
class Solution {
    public int solution(int[][] board) {
        int answer=0;
        int[][] copyBoard = new int[board.length][board[0].length];
        for (int i=0; i<board.length; i++){
            for (int j=0; j<board[0].length; j++){
                if (board[i][j]==1){
                    copyBoard[i][j]=1;
                }
            }
        }
        for (int i=0; i<board.length; i++){
            for (int j=0; j<board[0].length; j++){
                if (board[i][j]==1) {
                    mineRange(i,j,copyBoard);
                }
            }
        }

        for (int i=0; i<copyBoard.length; i++){
            for (int j=0; j<copyBoard[0].length; j++){
                if (copyBoard[i][j]==0) {
                    answer++;
                }
            }
        }
        return answer;
    }
    
    private void mineRange(int row, int col, int[][] board){
        for (int r = row-1; r<=row+1; r++){
            for (int c = col-1; c<=col+1; c++){
                if(r<0 || r>=board.length || c<0 || c>=board[0].length){
                    continue;
                }else{
                board[r][c]=1;
                }
            }
        }
    }
}

'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글

나머지가 1이 되는 수 찾기  (0) 2022.10.16
삼각형의 완전조건 (2)  (0) 2022.10.16
하샤드 수  (1) 2022.10.14
자연수 뒤집어 배열로 만들기  (0) 2022.10.14
같은 숫자는 싫어  (0) 2022.10.14