9. 쿼드 압축 후 개수세기 JAVA (프로그래머스)
by BFine반응형
가. 문제파악
1. 유형 : 분할정복, DFS
- 예전에 한번 본적이 있는 문제라 쉽게 풀줄 알았는데 생각보다 어려웠다 ..
- 어렴풋한 기억으로 풀려다보니 모든걸 쪼갠뒤에 답을 구하려하니 답이 나오지 않았다.
나. 코드
1. 풀이 : 4방면으로 쪼개자!
- 스타트 지점이 중요한데 (0,0) 을 기준으로 큰 -> 작은 사각형 순으로 4방면으로 분할하자!
- 4방면으로 분할하기 전에 압축할 수 있는지를 판단 해야한다!
=> 전부 1 또는 0이라면 하나로 압축이 가능하므로 큰거 부터 판단해야한다.
import java.util.Arrays;
public class Solution {
public int[] solution(int[][] arr){
ans = new int[2];
div(0,0,arr.length,arr);
return ans;
}
private static int[] ans;
public void div(int x, int y, int len,int[][] arr){
boolean isZero = true;
boolean isOne = true;
for (int i = x; i < x+len ; i++) {
for (int j = y; j <y+len; j++) {
if(arr[i][j] == 1) isZero = false;
if(arr[i][j] == 0) isOne= false;
}
}
if(isOne){
ans[1]++;
return;
}
if(isZero){
ans[0]++;
return;
}
div(x,y,len/2,arr);
div(x+len/2,y,len/2,arr);
div(x,y+len/2,len/2,arr);
div(x+len/2,y+len/2,len/2,arr);
}
}
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
11. 다리를 지나는 트럭 JAVA (프로그래머스) (0) | 2021.04.12 |
---|---|
10. 단체사진찍기 JAVA (프로그래머스) (0) | 2021.04.11 |
8. 땅따먹기 (프로그래머스) (0) | 2021.04.10 |
7. n진수게임 (프로그래머스) (0) | 2021.04.10 |
6. 삼각달팽이 (프로그래머스) (0) | 2021.04.10 |
블로그의 정보
57개월 BackEnd
BFine