코딩테스트
[프로그래머스/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문으로 작성했었는데, 크게 틀린 풀이는 아니었던것 같다.
그리고 저 마지막 리턴할때 조건문은 생각 못한 부분이었는데... 많이 배웠다.