programmers.co.kr/learn/courses/30/lessons/68936?language=java
코딩테스트 연습 - 쿼드압축 후 개수 세기
[[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15]
programmers.co.kr
문제 풀이 :
백준 2630번 색종이 만들기와 같은 문제 szcode.tistory.com/8
class Solution {
static int n,zero = 0, one = 0;
static int[][] map;
public static int[] solution(int[][] arr) {
int[] answer = new int[2];
n = arr.length;
map = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
map[i][j] = arr[i][j];
}
}
div(0,0,n);
answer[0] = zero;
answer[1] = one;
return answer;
}
public static void div(int x, int y, int n) {
int count = 0;
//전체 영역이 1로 가득 차있는지 확인
for (int i = x; i < x+n; i++) {
for (int j = y; j < y+n; j++) {
if(map[i][j] == 1) count++;
}
}
if(count == 0) zero++; //압축, 모든 영역 0 이라면
else if(count == n*n) one++; // 압축, 모든 영역 1이라면
else {// 그렇지 않다면 분할
div(x,y,n/2);
div(x,y+n/2,n/2);
div(x+n/2,y,n/2);
div(x+n/2,y+n/2,n/2);
}
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[프로그래머스] 단속카메라 (0) | 2021.03.16 |
---|---|
[프로그래머스] 카펫 (0) | 2021.03.16 |
[백준] 14502번 연구소 (0) | 2021.03.03 |
[프로그래머스] 위장 (0) | 2021.02.04 |
[SWEA] 1954. 달팽이 숫자 (0) | 2021.01.28 |