algospot.com :: QUADTREE
쿼드 트리 뒤집기 문제 정보 문제 대량의 좌표 데이터를 메모리 안에 압축해 저장하기 위해 사용하는 여러 기법 중 쿼드 트리(quad tree)란 것이 있습니다. 주어진 공간을 항상 4개로 분할해 재귀적으로 표현하기 때문에 쿼드 트리라는 이름이 붙었는데, 이의 유명한 사용처 중 하나는 검은 색과 흰 색밖에 없는 흑백 그림을 압축해 표현하는 것입니다. 쿼드 트리는 2N × 2N 크기의 흑백 그림을 다음과 같은 과정을 거쳐 문자열로 압축합니다. 이 그림의 모든
algospot.com
분할정복 알고리즘 부분은 교재에 나와있는 소스코드와 동일하다.
다만 책에서 설명이 안되어있는데, 매개변수로 반복자를 참조하기 위해서는 비 const 반복자를 전달해야한다.
tree.begin() 이 반환하는 반복자는 const 반복자이므로 따로 비 const 반복자를 선언하고 tree.begin()으로 초기화해줘야 한다는 점만 주의하면 될 것 같다.
#include <iostream> string Reverse(string::iterator& iter) { char head = *iter; iter++; if (head == 'w' || head == 'b') return string(1, head);
string upperLeft = Reverse(iter); string upperRight = Reverse(iter); string lowLeft = Reverse(iter); string lowRight = Reverse(iter);
return string("x") + lowLeft + lowRight + upperLeft + upperRight; } int main(void) { int testcase; cin >> testcase; string tree; while (testcase--) { cin >> tree; string::iterator iter = tree.begin(); cout << Reverse(iter) << endl; } } |
알고리즘 200일 프로젝트 - 34day
'알고리즘 > algospot' 카테고리의 다른 글
알고리즘 문제해결전략 예제: 외발 뛰기 (ID: JUMPGAME) (0) | 2020.05.22 |
---|---|
알고리즘 문제해결전략 문제7.4 울타리 잘라내기 (ID: FENCE) (0) | 2020.05.09 |
알고리즘 문제해결전략 문제6.8 시계 맞추기(ID: CLOCKSYNC) (0) | 2020.04.10 |
알고리즘 문제해결전략 문제6.5 게임판 덮기(ID: BOARDCOVER) (0) | 2020.04.09 |
알고리즘 문제해결전략 문제6.3 소풍(ID: PICNIC) (0) | 2020.04.09 |