반응형
풀이
- 이번 문제는 크게 설명할 부분은 없지만,
- 그냥 주어지는 종이를 확인 후 서로 다른 것이 확인되면
- state를 변경 후 탈출하는 조건을 걸어 조금 더 빠르게 해결하고자 했으며
- 만약 state가 false인 경우, 해당 종이를 9분할 하여 다시 확인하며 해결.
import java.io.*;
import java.util.*;
public class _1780 {
static int[][] mtx;
static int N;
static int[] result = {0,0,0};
public static void main(String[] agrs) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
N = Integer.parseInt(br.readLine());
mtx = new int[N][N];
for (int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine());
for (int j=0; j<N; j++) mtx[i][j] = Integer.parseInt(st.nextToken());
}
reg(0,N,0,N,N);
for (int num: result) System.out.println(num);
}
public static void reg(int si, int ei, int sj, int ej, int n) {
boolean state = true;
int now = mtx[si][sj];
for (int i=si; i<ei; i++) {
for (int j=sj; j<ej; j++) {
if (mtx[i][j]!= now) {
state = false;
break;
}
} if (!state) break;
}
if (!state) {
int t_half = n/3;
for (int i=si; i<ei; i+=t_half) {
for (int j=sj; j<ej; j+=t_half) reg(i,i+t_half, j,j+t_half, t_half);
}
} else {
result[now + 1] += 1;
return;
}
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 11057번] 오르막 수 (0) | 2024.10.23 |
---|---|
[백준, 자바, 1463번] 1로 만들기 (0) | 2024.10.23 |
[백준, 자바, 17478번] 재귀함수가 뭔가요? (0) | 2024.10.23 |
[백준, 자바, 2583번] 영역 구하기 (1) | 2024.10.22 |
[백준, 자바, 5635번] 생일 (1) | 2024.10.16 |