문제가 시키는 대로 했다
#include <string>
using namespace std;
bool check(string s) { // 올바른 괄호 문자열인지 판별
int i, cnt = 0;
for (i = 0; i < s.size(); i++) {
if (s[i] == '(') cnt++;
else cnt--;
if (cnt < 0) return false;
}
return cnt == 0;
}
string solution(string p) {
string answer = "";
int cnt = 0, i;
string u, v;
if (p == "") return p; // 1단계
// 2단계
for (i = 0; i < p.size(); i++) {
if (p[i] == '(') cnt++;
else cnt--;
if (cnt == 0) {
u = p.substr(0, i + 1);
v = p.substr(i + 1);
break;
}
}
// 3단계
if (check(u)) return u + solution(v);
// 4단계
answer = '(' + solution(v) + ')';
for (i = 1; i < u.size() - 1; i++) {
answer += (u[i] == '(' ? ')' : '(');
}
return answer;
}