본문 바로가기
코딩테스트/분할 정복

쿼드 트리 뒤집기 (문제 ID: QUADTREE, 난이도: 하)

by Luigi.yoon 2023. 8. 3.

문제 참고 : https://algospot.com/judge/problem/read/QUADTREE

 

algospot.com :: QUADTREE

쿼드 트리 뒤집기 문제 정보 문제 대량의 좌표 데이터를 메모리 안에 압축해 저장하기 위해 사용하는 여러 기법 중 쿼드 트리(quad tree)란 것이 있습니다. 주어진 공간을 항상 4개로 분할해 재귀적

algospot.com

 

 

예제 입력

4
w
xbwwb
xbwxwbbwb
xxwwwbxwxwbbbwwxxxwwbbbwwwwbb

 

예제 출력

w
xwbbw
xxbwwbbbw
xxwbxwwxbbwwbwbxwbwwxwwwxbbwb

 

 

public static void main(String[] args) {
    System.out.println(solution("xbwwb"));
    System.out.println(solution("xbwxwbbwb"));
    System.out.println(solution("xxwwwbxwxwbbbwwxxxwwbbbwwwwbb"));
}

public static String solution(String treeStr) {
    return reverseTree(treeStr, 0);
}

static String reverseTree(String treeStr, int point) {
    char pointValue = treeStr.charAt(point);
    if(!(pointValue == 'x')) {
        return String.valueOf(pointValue);
    }

    String upperLeft = reverseTree(treeStr, point + 1);
    String upperRight = reverseTree(treeStr, point + 1 + upperLeft.length());
    String lowerLeft = reverseTree(treeStr, point + 1 + upperLeft.length() + upperRight.length());
    String lowerRight = reverseTree(treeStr, point + 1 + upperLeft.length() + upperRight.length() + lowerLeft.length());

    return new StringBuilder("x").append(lowerLeft).append(lowerRight).append(upperLeft).append(upperRight).toString();
}

 

 

'코딩테스트 > 분할 정복' 카테고리의 다른 글

쿼드 트리 압축하기  (0) 2023.08.07
Quick sort  (0) 2023.08.01
Merge sort  (0) 2023.08.01