코딩테스트 문제풀이
[프로그래머스, javascript]쿼드 압축 후 개수 세기
이기적인개발자
2021. 3. 19. 16:12
function fnA(arr, lx, ly, rx, ry, t){
let el = arr[ly][lx]
for(let i=ly; i<ry; i++){
for(let j=lx; j<rx; j++){
if(el != arr[i][j]){
return (
fnA(arr, lx, ly, parseInt((lx+rx)/2), parseInt((ly+ry)/2),t) +
fnA(arr, parseInt((lx+rx)/2), ly, rx, parseInt((ly+ry)/2),t) +
fnA(arr, lx, parseInt((ly+ry)/2), parseInt((lx+rx)/2), ry,t) +
fnA(arr, parseInt((lx+rx)/2), parseInt((ly+ry)/2), rx, ry,t)
)
}
}
}
return !el^t
}
function solution(arr) {
var answer = [fnA(arr, 0, 0, arr.length, arr.length, 0),
fnA(arr, 0, 0, arr.length, arr.length, 1 )];
return answer;
}
재귀함수로 풀어내었다.
해당 문제 해결 방법 그대로 적용시켜 풀어내었다.
좀 아쉬운 부분은 fnA 함수를 두 번 호출하였다는 점이 아쉽다. 한 번에 하는 방법이 있을 것 같은데 해결방안이 생각나질 않네.