https://www.acmicpc.net/problem/2630
2630번: 색종이 만들기
첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.
www.acmicpc.net
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, white, blue;
static int[][] map;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
map = new int[N][N];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < N; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
paper(0, 0, N);
System.out.print(white + "\n" + blue);
}
static void paper(int r, int c, int size) {
int one = 0;
int zero = 0;
for (int i = r; i < r + size; i++) {
for (int j = c; j < c + size; j++) {
if (map[i][j] == 1) one++;
else zero++;
}
}
if (one == size * size) blue++;
else if (zero == size * size) white++;
else {
int half = size / 2;
paper(r, c, half);
paper(r + half, c, half);
paper(r, c + half, half);
paper(r + half, c + half, half);
}
}
}'OJ' 카테고리의 다른 글
| [BOJ] 1107 리모컨 (JAVA) (0) | 2023.08.05 |
|---|---|
| [BOJ] 18870 좌표 압축 (JAVA) (0) | 2023.08.04 |
| [BOJ] 2869 달팽이는 올라가고 싶다 (JAVA) (0) | 2023.08.02 |
| [BOJ] 2231 분해합 (JAVA) (0) | 2023.08.01 |
| [BOJ] 9613 GCD 합 (JAVA) (0) | 2023.07.31 |