https://programmers.co.kr/learn/courses/30/lessons/68936?language=java
4분할로 길이가 1이 될때 까지 쪼갠다. 그리고 나서 모두 같은 수가 나오면 그수를 return 해준다. 만약에 다른수가 섞여있으면 -1을 리턴해준다. 테스트케이스 한개가 틀리길래 뭔가 했는데. 최초로 solve 함수를 호출할때 값을 계산을 안해줬었다. 그래서 [[0,0],[0,0]] 이런 경우에 아무값이 증가가 안되고 있었다.
쿼드트리... 예전에 opengl 로 프로젝트 할때 쿼드트리를 이용했었는데 여기서 또 만나넹...
class Solution {
static private int[][] map;
static private int[] answer = {0,0};
public int[] solution(int[][] arr) {
map = arr;
int result = solve(0,0,arr.length);
if(result != -1) answer[result]++;
return answer;
}
public int solve(int sy, int sx , int size){
if(size == 1){
return map[sy][sx];
}
int nextSize = size/2;
int a = solve(sy,sx,nextSize);
int b = solve(sy+nextSize , sx , nextSize);
int c = solve(sy,sx+nextSize , nextSize);
int d = solve(sy+nextSize , sx + nextSize , nextSize);
if(a == b && b == c && c == d && d == 1){
return 1;
}else if(a == b && b == c && c == d && d == 0){
return 0;
}else{
if(a != -1) answer[a]++;
if(b != -1) answer[b]++;
if(c != -1) answer[c]++;
if(d != -1) answer[d]++;
return -1;
}
}
}