일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- modern c++
- programmers
- java
- 회원가입
- 회귀
- SWEA
- c
- Spotify Api
- 파이썬
- C++
- spring boot
- spotify
- Spring
- 자바
- SECS
- Baekjoon
- 백준
- linux
- SW Expert Academy
- MYSQL
- Computer Science
- python
- Gem
- 프로그래머스
- SECS/GEM
- 스포티파이
- Spring JPA
- regression
- SECS-II
- CS
Archives
- Today
- Total
비버놀로지
[BAEKJOON 백준] 1992 쿼드트리 본문
728x90
https://www.acmicpc.net/problem/1992
쿼드트리는 배열을 압축하는 문제입니다.
크기를 점점 반으로 나눠가면서 해당구역이 모두 같은 숫자가 될때까지 쪼개는 작업을 하게 됩니다.
그렇게 쪼개진 구역이 모든 같은 숫자가 나오면 그 숫자를 출력하게 됩니다.
import java.util.Scanner;
public class Main {
static int N, M;
static int arr[][];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
arr = new int[N][N];
for (int i = 0; i < N; i++) {
String temp = sc.next();
for (int j = 0; j < N; j++) {
arr[i][j] = temp.charAt(j) - '0'; // 입력을 받아서 '0'을 빼 숫자로 바꿔준다.
}
}
find(0, 0, N);
}
private static void find(int x, int y, int size) { // 크기를 반으로 계속 줄여가면서 압축하기
// TODO Auto-generated method stub
if (check(x, y, size)) { // check를 통해 한구역에 다 같은 숫자인지 확인
System.out.print(M);
return;
} else {
System.out.print("(");
int newsize = size / 2;
for (int i = 0; i < 2; i++) { // 크기를 반으로 나누고 재귀를 통해 결과값 찾기
for (int j = 0; j < 2; j++) {
find(x + newsize * i, y + newsize * j, newsize);
}
}
System.out.print(")");
}
}
private static boolean check(int x, int y, int size) {
// TODO Auto-generated method stub
int temp = arr[x][y];
for (int i = x; i < x + size; i++) {
for (int j = y; j < y + size; j++) {
if (arr[i][j] != temp)
return false;
}
}
M = temp;
return true;
}
}
728x90
'ALGORITM > JAVA' 카테고리의 다른 글
[SWEA SW Expert Academy] 1249 보급로 (0) | 2020.12.01 |
---|---|
[SWEA SW Expert Academy] 4013 특이한 자석 (0) | 2020.12.01 |
[BAEKJOON 백준] 17406 배열돌리기 4 (0) | 2020.08.31 |
[BAEKJOON 백준] 15686 치킨 배달 (0) | 2020.08.30 |
[BAEKJOON 백준] 1074 Z (0) | 2020.08.30 |
Comments