분할정복 알고리즘 부분은 교재에 나와있는 소스코드와 동일하다.
다만 책에서 설명이 안되어있는데, 매개변수로 반복자를 참조하기 위해서는 비 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 |