programmers_쿼드압축 후 개수 세기_java
2023. 4. 14. 12:07ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/68936
class Solution {
private static int[] result;
public int[] solution(int[][] arr) {
int[] answer = new int[2];
result = new int[2];
quard(0,0,arr.length-1, arr[0].length-1, arr);
answer = result;
return answer;
}
public void quard(int sy, int sx, int ey, int ex, int[][] arr){
int boxResult = isOne(sy, sx, ey, ex, arr);
if(boxResult == 0){ // 해당 영역이 동일한 값으로 채워져있는지 확인
result[0]++;
return;
}else if(boxResult == 1){
result[1]++;
return;
}
int midy = (sy + ey) /2;
int midx = (sx + ex) /2;
// 좌상
quard(sy, sx, midy, midx, arr);
// 우상
quard(sy, midx +1, midy, ex, arr);
// 좌하
quard(midy+1, sx, ey, midx, arr);
// 우하
quard(midy+1, midx +1, ey, ex, arr);
}
public int isOne(int sy, int sx, int ey, int ex, int[][] arr){
int tmp = arr[sy][sx];
for(int i = sy; i<=ey; i++){
for(int j = sx; j<=ex; j++){
if(tmp != arr[i][j]){
return -1;
}
}
}
return tmp;
}
public void printArr(int sy, int sx, int ey, int ex, int[][] arr){
System.out.println("("+sy+","+sx+") "+"("+ey+","+ex+")");
for(int i = sy; i<=ey; i++){
for(int j = sx; j<=ex; j++){
System.out.print(arr[i][j] +" ");
}
System.out.println();
}
System.out.println();
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_롤케이크 자르기_java (0) | 2023.04.16 |
---|---|
programmers_큰 수 만들기_java (0) | 2023.04.15 |
programmers_숫자 변환하기_java (0) | 2023.04.14 |
programmers_뒤에 있는 큰 수 찾기_java (0) | 2023.04.14 |
programmers_2 x n 타일링_java (0) | 2023.04.13 |