문제 출처 :
algospot.com/judge/problem/read/QUADTREE
algospot.com :: QUADTREE
쿼드 트리 뒤집기 문제 정보 문제 대량의 좌표 데이터를 메모리 안에 압축해 저장하기 위해 사용하는 여러 기법 중 쿼드 트리(quad tree)란 것이 있습니다. 주어진 공간을 항상 4개로 분할해 재귀적
algospot.com
문제 풀이:
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;
}
'Computer Science > Algorithm' 카테고리의 다른 글
[백준] 20528 - 끝말잇기 (Python) (0) | 2021.01.03 |
---|---|
[백준] 20492 - 세금 (Python) (0) | 2021.01.02 |
[종만북] 쿼드 트리 뒤집기(QUADTREE) (Python) (0) | 2021.01.02 |
[종만북] 게임판덮기(BOARD COVER) (C++) (0) | 2021.01.02 |
[백준] 10157- 자리배정 (C++) (0) | 2020.12.30 |