코딩테스트

[프로그래머스/javascript] 프렌즈 4블록(못풀었다..꼭 다시풀기)

_서리__ 2023. 3. 7. 10:19
function solution(m, n, board) {
    var answer = 0;
    board = board.map((el)=>el.split(""));
    while(true){
    let deletedBlock = [];
    for(let i=0;i<m-1;i++){
        for(let j=0;j<n-1;j++){
            let char = board[i][j];
            if(board[i][j]){
            if(char===board[i][j+1]&&char===board[i+1][j]&&char===board[i+1][j+1]){
                deletedBlock.push([i,j],[i,j+1],[i+1,j],[i+1,j+1])
            }}
        }
    }
    if(deletedBlock.length===0) return [].concat(...board).filter((v) => !v).length;
    for(let i=0;i<deletedBlock.length;i++){
        board[deletedBlock[i][0]][deletedBlock[i][1]] = 0
    }
    for (let i = m - 1; i > 0; i--) {
            for (let j = 0; j < n; j++) {
                for (let k = i - 1; k >= 0 && ! board[i][j]; k--) {
                    if (board[k][j]) {
                        board[i][j] = board[k][j];
                        board[k][j] = 0;
                        break;
                    }
                }
            }
        }}
}

블록을 밑으로 내리는 과정에서 너무 어려워서 못풀었다.

나는 저 for(k)문을 while문으로 작성했었는데, 크게 틀린 풀이는 아니었던것 같다.

그리고 저 마지막 리턴할때 조건문은 생각 못한 부분이었는데... 많이 배웠다.