Dev.baelanche

[백준 1992] 쿼드트리 본문

Data Structure & Algorithm/PS - JAVA

[백준 1992] 쿼드트리

baelanche 2019. 5. 3. 20:05
반응형

 

1780번 문제와 동일한 방식으로 풀면된다.

 

다만 재귀가 깊어질수록 출력할 숫자 좌우에 괄호를 붙여주어야 하는데,

필자는 큐에 담아서 pop 하는 방식으로 구현했다.

 

 

public class Main {
    
    static char[][] a;
    static Queue q = new LinkedList();
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        a = new char[n][n];
        for(int i=0; i<n; i++)
            a[i] = sc.next().toCharArray();
        
        recursive(0, 0, n);
        while(!q.isEmpty()) System.out.print(q.poll());
    }
    
    public static void recursive(int r, int c, int len) {
        boolean f = true;
        char ch = a[r][c];
        for(int i=r; i<r+len; i++) {
            for(int j=c; j<c+len; j++) {
                if(ch != a[i][j]) {
                    f = false;
                    break;
                }
            }
        }
        
        if(!f) {
            q.offer("(");
            int m = len/2;
            for(int i=0; i<2; i++) {
                for(int j=0; j<2; j++) {
                    recursive(r + i*m, c + j*m, m);
                }
            }
            q.offer(")");
        } else q.offer(a[r][c]);
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 1931] 회의실배정  (0) 2019.05.07
[백준 1918] 후위표기식  (0) 2019.05.03
[백준 1780] 종이의 개수  (0) 2019.05.03
[백준 1629] 곱셈  (0) 2019.05.03
[백준 1713] 후보 추천하기  (0) 2019.04.27
Comments