본문 바로가기
Computer Science/Algorithm

[종만북] 쿼드 트리 뒤집기(QUADTREE) (C++)

by 수제햄버거 2021. 1. 2.
728x90
반응형

문제 출처 :

algospot.com/judge/problem/read/QUADTREE

 

algospot.com :: QUADTREE

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

algospot.com

문제 풀이:

jinu0418.tistory.com/manage/newpost/32?type=post&returnURL=https%3A%2F%2Fjinu0418.tistory.com%2Fmanage%2Fposts

 

https://jinu0418.tistory.com/manage/newpost/32?type=post&returnURL=https%3A%2F%2Fjinu0418.tistory.com%2Fmanage%2Fposts

 

jinu0418.tistory.com

Python 과 다른 점:

it 를 string의 iterator를 사용한다. C++ 를 사용한지 얼마 안되어서 string iterator 에 대해서 공부할 수 있었다.

(실제로 python에도 iterator 기능이 있긴 하지만 한번도 써본적은 없다.) ( wikidocs.net/16068)

 

C++ iterators : minwoo2815.tistory.com/entry/C-Iterator-%EB%B0%98%EB%B3%B5%EC%9E%90

 

C++ Iterator 반복자

Iterator 즉 반복자는 컨테이너(Vector)에 저장된 원소를 순회하고 접근하는 방법을 제공합니다. 쉽게 설명하자면 foreach(a in b) 에서 a를 가져오는 역할을 합니다. C#으로 치면 IEnumable이구요. 선언 1 vec

minwoo2815.tistory.com

 

#include <iostream>
#include <string>

using namespace std;

string reverse_quadtree(string::iterator& it);

int main()
{
    int c=0;
    string quadtree;
    cin >>c;
    for(int i =0;i<c;i++)
    {
        cin >> quadtree;
        string::iterator iter = quadtree.begin();
        string ans = reverse_quadtree(iter);
        cout << ans <<'\n';
    }

}

string reverse_quadtree(string::iterator& it)
{
    char head = *it;
    it+=1;
    if(head =='b' || head=='w')
    {
        return string(1,head);
    }
    string upperLeft = reverse_quadtree(it);
    string upperRight = reverse_quadtree(it);
    string lowerLeft = reverse_quadtree(it);
    string lowerRight = reverse_quadtree(it);

    return 'x'+lowerLeft+lowerRight+upperLeft+upperRight;
}
반응형