uploaded at 2023. 1. 21. 오후 5:11:32

This commit is contained in:
rl544
2023-01-21 17:11:33 +09:00
parent 4e363b0999
commit 7547225aa3
@@ -0,0 +1,114 @@
// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/68936
import java.util.*;
class Solution {
public int[] solution(int[][] arr) {
return div(arr,0,0,arr.length,arr.length);
}
public int[] div(int[][] arr, int s, int sc, int e, int ec){
int z = 0, o = 0, tmp = 0, cnt = 0;
int[] ans = new int[2], tt = new int[2];
if(s == 0 && sc == 0 && e == arr.length && ec == arr.length){
for(int rr = 0; rr < e; rr++){
for(int cc = 0; cc < ec; cc++){
tmp += arr[rr][cc];
cnt ++;
}
}
if(cnt == 0) ;
else if(tmp == 0) {
ans[0] += 1;
return ans;
}
else if(tmp == cnt) {
ans[1] += 1;
return ans;
}
}
if(e>1){
tmp = 0;
cnt = 0;
for(int rr = s; rr < (s+e)/2; rr++){
for(int cc = sc; cc < (sc+ec)/2; cc++){
tmp += arr[rr][cc];
cnt ++;
}
}
if(cnt == 0) ;
else if(tmp == 0) {
ans[0] += 1;
}
else if(tmp == cnt) {
ans[1] += 1;
}
else{
tt = div(arr, s, sc, (s+e)/2, (sc+ec)/2);
ans[0] += tt[0];
ans[1] += tt[1];
}
tmp = 0;
cnt = 0;
for(int rr = s; rr < (s+e)/2; rr++){
for(int cc = (sc+ec)/2 ; cc < ec; cc++){
tmp += arr[rr][cc];
cnt ++;
}
}
if(cnt == 0) ;
else if(tmp == 0) {
ans[0] += 1;
}
else if(tmp == cnt) {
ans[1] += 1;
}
else{
tt = div(arr, s, (sc+ec)/2, (s+e)/2, ec);
ans[0] += tt[0];
ans[1] += tt[1];
}
tmp = 0;
cnt = 0;
for(int rr = (s+e)/2; rr < e; rr++){
for(int cc = sc; cc < (sc+ec)/2; cc++){
tmp += arr[rr][cc];
cnt ++;
}
}
if(cnt == 0) ;
else if(tmp == 0) {
ans[0] += 1;
}
else if(tmp == cnt) {
ans[1] += 1;
}
else{
tt = div(arr, (s+e)/2, sc, e, (sc+ec)/2);
ans[0] += tt[0];
ans[1] += tt[1];
}
tmp = 0;
cnt = 0;
for(int rr = (s+e)/2; rr < e; rr++){
for(int cc = (sc+ec)/2 ; cc < ec; cc++){
tmp += arr[rr][cc];
cnt ++;
}
}
if(cnt == 0) ;
else if(tmp == 0) {
ans[0] += 1;
}
else if(tmp == cnt) {
ans[1] += 1;
}
else{
tt = div(arr, (s+e)/2, (sc+ec)/2, e, ec);
ans[0] += tt[0];
ans[1] += tt[1];
}
}
return ans;
}
}