#include <iostream>
#include <string>
using namespace std;
string reverse(string::iterator& it) {
char head = *it;
++it;
if (head == 'b' || head == 'w') return string(1, head); //head string형태 return
string upperLeft = reverse(it);
string upperRight = reverse(it);
string lowerLeft = reverse(it);
string lowerRight = reverse(it);
return string("x") + lowerLeft + lowerRight + upperLeft + upperRight;
}
int main() {
int tc;
cin >> tc;
while (tc--) {
string inputStr;
cin >> inputStr;
auto iter = inputStr.begin();
cout << reverse(iter) << '\n';
}
}
어떻게 이런 생각을 할까..
반복가 참조형으로 전달되기 때문에 재귀 호출 내부에서 반복자를 옮기면 밖에서도 그 변화가 전달되게 됨. s를 미리쪼개지 않고도 필요한 만큼만 가져다 쓰게 할 수 있다. 때문에 재귀에서 좌상단,우상단,좌하단,좌상단 순서대로 자연스럽게 문자열을 분해해 줄 수 있다. (좌상단 문자열 파악하고 저장하면 다음 반복자는 우상단 head를 가리킴)
.......................
알고스팟에 문제가 올라가있는 걸 모르고 있어서 여태 테스트케이스만 맞추면 넘어갔는데,, 쿼드트리 제외하고 저번 문제들은 알고스팟에 코드 넣어보니까 틀렸다고 뜬다..ㅠㅠ
'알고리즘 > 종만북' 카테고리의 다른 글
MATCHORDER - 출전 순서 정하기 (그리디) (0) | 2020.02.03 |
---|---|
QUANTIZE - Quantization (dp, 전처리, 수학) (0) | 2020.02.03 |
07 - 쿼드 트리 QUADTREE (0) | 2019.06.30 |
06 - 시계 맞추기 CLOCKSYNC (0) | 2019.06.27 |
06 - 게임판 덮기 BOARDCOVER (0) | 2019.06.25 |