프로그래머스/구현
[재귀] 프로그래머스 '쿼드압축 후 개수' - js
bbeyak
2023. 4. 29. 21:15
반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/68936
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 코드
const solution = (arr) => {
let zero = 0;
let one = 0;
// 쪼개는 함수 (시작행, 시작열, 비교할 길이)
const divide = (row, col, n) => {
let canDivide = true;
// 처음부터 전부 숫자가 같은 지 비교
for (let y=row; y < row+n; y++) {
for (let x=col; x < col+n; x++) {
if (arr[row][col] !== arr[y][x])
canDivide = false;
}
};
// 만약 같은 값으로 이루어 지지 않았으면, 4분할 하여 n/2씩 비교하는 재귀함수를 호출
if (!canDivide) {
const halfN = parseInt(n/2);
divide(row, col, halfN)
divide(row, col+halfN, halfN)
divide(row+halfN, col, halfN)
divide(row+halfN, col+halfN, halfN)
// 만약 같은 값이면 행렬의 시작점을 비교하여 카운팅
} else {
if (arr[row][col]) one ++;
else zero ++;
}
}
divide(0, 0, arr.length);
return [zero, one];
}
요 몇일 새 재귀 문제 안풀었다고 재귀에 대한 감을 잃었나보다.. 어렵게 접근해서 어렵게 풀려고 했으나 꼬여서 실패 ㅋㅋㅋㅋ
재귀는 문제를 더 작은 문제로 쪼갤 수 있을 때!!!!
복기
6/18
반응형