코드 흐름
- 백준에서 많이 풀어본 문제 유형이었다.
- 재귀를 통해서 4가지 분기를 만들어 풀이하였다.
import java.util.*;
class Solution {
public int one = 0 , zero = 0;
public int[] solution(int[][] arr) {
ck(0,arr[0].length,0,arr[0].length,arr);
int[] answer = {zero, one};
return answer;
}
public void ck(int sx, int ex, int sy, int ey , int[][] arr){
int num = arr[sx][sy];
if(ex-sx != 1 && ey-sy !=1){
for(int i = sx ; i < ex ; i++){
for(int j = sy ; j < ey ; j++){
if(num != arr[i][j]){
ck(sx,(sx+ex)/2,sy,(sy+ey)/2,arr);
ck(sx,(sx+ex)/2,(sy+ey)/2,ey,arr);
ck((sx+ex)/2,ex,sy,(sy+ey)/2,arr);
ck((sx+ex)/2,ex,(sy+ey)/2,ey,arr);
return ;
}
}
}
}
if(num == 0) zero++;
else one++;
return ;
}
}
'Algorithm & Data Structures > Programers' 카테고리의 다른 글
Lv 2. 삼각달팽이 (1) | 2024.07.31 |
---|---|
Lv 2. 소수찾기 (1) | 2024.07.30 |
Lv 2. 가장 큰 수 (0) | 2024.07.26 |
Lv 2. 방문길이 (0) | 2024.07.25 |
Lv 2. 2개 이하로 다른 비트 (0) | 2024.07.23 |