백준 1992 쿼드트리

https://www.acmicpc.net/problem/1992
실버2나 실버1이나 실버3이나 다 똑같은 수준이라서 실버1로 껑충.. ㅎㅎ
이문제의 특성은 압축이 안되면 "(" 로 시작해서 ")"로 닫아주는게 핵심
메인 로직
- 압축 검사하기
 1.1 검사 통과하면 0이나 1로 압축된값 더해주고 return
 1.2 통과하지 못하면 2번으로
- 4분할로 나눠서 좌표 나눠주고 "(" 추가후 재귀 (1번로직을 타게끔)
- 재귀가 끝나면 ")" 추가
- 끝
import java.io.*;
import java.util.*;
public class 쿼드트리 {
	static int[][] array;
	static int N;
	static StringBuilder sb;
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		N = Integer.parseInt(br.readLine());
		array = new int[N][N];
		for(int i=0;i<N;i++) {
			String line = br.readLine();
			for(int j=0;j<N;j++) {
				array[i][j] = line.charAt(j)-'0';
			}
		}
		sb= new StringBuilder();
		
		cd(0,0,N);
		
		System.out.println(sb);
	}
	public static void cd(int x,int y, int length) {
		if(length==1) {
			sb.append(array[x][y]);
			return ;
		}
		
		int sum = 0;
		for(int i=x;i<x+length;i++) {
			for(int j=y;j<y+length;j++) {
				sum += array[i][j];
			}
		}
		if(sum==0) {
			sb.append("0");
			return;
		}
		if(sum==length*length) {
			sb.append("1");
			return;
		}
		
		int ql = length/2;
		sb.append("(");
		for(int i=0;i<2;i++) {
			cd(x+(i*ql),y,ql);
			cd(x+(i*ql),y+ql,ql);
		}
		sb.append(")");
	}
}

번아웃이 온..일주일 ㅎㅎ;;
다시 열심히달려보자..
Author And Source
이 문제에 관하여(백준 1992 쿼드트리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tekies09/백준-1992-쿼드트리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)