반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/68936
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
반응형
'프로그래머스 > 구현' 카테고리의 다른 글
[구현] 프로그래머스 '124 나라의 숫자' - js (0) | 2023.05.03 |
---|---|
[구현] 프로그래머스 '삼각 달팽이' - js (0) | 2023.05.02 |
[구현] 프로그래머스 '기지국 설치' - js (0) | 2023.04.28 |
[구현] 프로그래머스 '숫자 게임' - js (0) | 2023.04.25 |
[구현] 프로그래머스 '2개 이하로 다른 비트' - js (0) | 2023.04.24 |