[프로그래머스] 쿼드압축 후 개수 세기

꿀이·2022년 6월 12일
0

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;
            
        }
        
    }
}
profile
내게 맞는 옷을 찾는중🔎

0개의 댓글