[Lv.0] 안전지대

01수정·2023년 6월 7일
0
post-thumbnail

<입문 100문제> Day 21 - 문자열, 사칙연산, 시뮬레이션, 2차원배열, 수학, 배열

문제



풀이

function solution(board) {
    let answer = 0;
    
    // 지뢰인접지역(=위험지역)의 좌표 
    let dangerArea = [
        [-1, -1], [-1, 0], [-1, 1], 
        [0, -1], [0, 1], 
        [1, -1], [1, 0], [1, 1] 
    ]; 

    for (let x=0; x<board.length; x++) {
        for (let y=0; y<board[x].length; y++) {
            if (board[x][y] == 1) {
                dangerArea.map(area => {
                    let [tempX, tempY] = area;
                    [tempX, tempY] = [tempX + x, tempY + y];
                    if (tempX >= 0 && tempX <= board.length-1 && 
                        tempY >=0 && tempY <= board[x].length-1 &&
                        board[tempX][tempY] == 0
                       ) {
                        board[tempX][tempY] = 2;
                    }
                });
            }
        }
    }
    board.map(row => row.map(spot => spot == 0 ? answer++ : 0));
    return answer; 
}

해답

profile
새싹 FE 개발자

0개의 댓글