728x90
반응형
진짜 겁나 보람차다 ㅜㅜ
물론 차근차근 연습문제 다 격파하고 진행했어야했는데, 마음 급한 나머지 ㅎㅎ
다시 매진해서 코테 공부해보자.
조합 구하는 PickorNot 익숙해질 필요있고
프렌즈 4블록 드디어 풀었다!!
다만 내 코드에서 왜 count 변수로는 적절히 계산이 안됬는지 원...
4, 5, ["CCBDE", "AAADE", "AAABF", "CCBBF"] 답>> 14 |
function isSame(row, col, board){
let target = board[row][col];
if(target === '.') return false;
if(board[row][col+1] === target && board[row+1][col] === target && board[row+1][col+1] === target){
return true;
}
else false;
}
function solution(m, n, board) {
board = board.map((line)=> line.split(''));
let count = 0; // remove blocks
let isChange = true;
let N = board.length;
while(isChange){
let willRemove = [];
isChange = false;
for(let row=0; row<=m-2; row++){
for(let col=0; col<=n-2; col++){
// 지울 리스트 만들기 (중복될 수 있어서 나중에 지움)
if(isSame(row, col, board)){
willRemove.push([row, col], [row, col+1], [row+1, col], [row+1, col+1]);
}
}
}
// 중복 없애기
willRemove = Array.from(new Set(willRemove));
// 지우기
for(let i=0; i<willRemove.length; i++){
isChange = true;
let row = willRemove[i][0],
col = willRemove[i][1];
board[row][col] = '.';
count ++;
// console.log(board);
}
// console.log("지우기 완료 =======================")
// 아래로 뗑기기
let isChange2 = true;
while(isChange2){
isChange2 = false;
for(let col = 0; col<n; col++){
for(let row = m-1; row>=1; row--){
if(board[row][col] === '.'){
if(board[row-1][col] !== '.') isChange2 = true;
board[row][col] = board[row-1][col];
board[row-1][col] = '.'
}
}
}
}
// console.log(board)
// console.log("아래로 땡기기 완료 =======================")
}
let result = 0;
for(let row=0; row<m; row++){
for(let col=0; col<n; col++){
if(board[row][col] === '.') result += 1;
}
}
return result;
// return count;
}
의사코드 / 구상 그림은 나중에 공유하겠다.
1월 10일 level 1 남은 5문제 Clear
반응형
'개발 지식 B+ > 코딩 테스트' 카테고리의 다른 글
프로그래머스 | 옹알이 - 재귀로 풀기 (0) | 2022.10.31 |
---|---|
순열 - 재귀로 구현 (0) | 2020.12.12 |