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 함수를 두 번 호출하였다는 점이 아쉽다. 한 번에 하는 방법이 있을 것 같은데 해결방안이 생각나질 않네.
'코딩테스트 문제풀이' 카테고리의 다른 글
[프로그래머스, javascript] 가장 긴 팰린드롬 (0) | 2021.03.28 |
---|---|
[프로그래머스, javascript] 여행 경로 (0) | 2021.03.26 |
[백준 16235] 나무 재테크 (0) | 2019.10.12 |
[백준 16234] 인구 이동 (0) | 2019.10.12 |
[백준 1969] DNA (0) | 2019.10.12 |