알고리즘 문제/[프로그래머스] Lv2
쿼드압축 후 개수 세기
Muscardinus
2021. 2. 3. 22:32
728x90
programmers.co.kr/learn/courses/30/lessons/68936?language=javascript
코딩테스트 연습 - 쿼드압축 후 개수 세기
[[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15]
programmers.co.kr
const quad = (arr, size, cntArr, start) => {
const first = arr[start[0]][start[1]]; // 시작점
if (size === 1) {
first === 0 ? cntArr[0]++ : cntArr[1]++;
return;
}
let half = Math.floor(size / 2);
let flag = true;
for (let i = start[0]; i < start[0] + size; i++) {
for (let j = start[1]; j < start[1] + size; j++) {
if (first !== arr[i][j]) {
flag = false;
break;
}
}
if (!flag) break;
}
if (flag) {
first === 0 ? cntArr[0]++ : cntArr[1]++;
return;
}
quad(arr, half, cntArr, start);
quad(arr, half, cntArr, [start[0], start[1] + half]);
quad(arr, half, cntArr, [start[0] + half, start[1]]);
quad(arr, half, cntArr, [start[0] + half, start[1] + half]);
return;
}
function solution(arr) {
let answer = [0, 0];
const size = arr.length;
quad(arr, size, answer, [0, 0]);
return answer;
}
728x90