코딩테스트/Java

[Programmers] 안전지대

Coarti 2024. 4. 23. 22:43
public int solution(int[][] board) {
    // 전체 순회 중 지뢰(1)은 건너 뜀
    for (int i = 0; i < board.length; i++) {
        for (int j = 0; j < board.length; j++) {

            // 팔방 확인
            for (int k = i - 1; k < i + 2; k++) { // 이전행, 현재행, 다음행
                for (int l = j - 1; l < j + 2; l++) { // 이전열, 현재열, 다음열
                    if (k >= 0 && k < board.length && l >= 0 && l < board.length && board[k][l] != 1) {
                        board[i][j]--; // 지뢰가 있으면 -1
                    }
                }
            }
        }
    }
    int answer = 0;
    for (int[] col : board) {
        for (int element : col) {
            if (element == 0) answer++; // 안전지대 카운트
        }
    }
    return answer;
}

주어진 2차원 배열에서 지뢰와 지뢰와 인접한 8방향을 제외하고 안전한 지역을 세는 문제

728x90