#include <string>
#include <vector>
using namespace std;
string getMyString(string s){
// 비어있는 문자열은 그냥 return
if(s.length() == 0) return "";
int flag = true;
int key = 0;
string u = "", v= "";
int i = 0;
while(key != 0 || i == 0){
if(s[i] == '('){
key++;
}
else if(s[i] == ')'){
key--;
}
if(key < 0) flag = false;
u += s[i];
i++;
}
v = s.substr(i);
// u가 올바른 괄호 문자열일 경우
if(flag) return u + getMyString(v);
// u가 균형잡힌일 경우
else{
// 문제에서 하라는 4번대로 해결
string tmp ="";
tmp += '(';
tmp += getMyString(v);
tmp += ')';
string newU = u.substr(1, u.length()-2);
for(int j =0; j<newU.length(); j++){
if(newU[j] == '(') newU[j] = ')';
else if(newU[j] == ')') newU[j] = '(';
}
return tmp + newU;
}
}
string solution(string p) {
string answer = "";
answer = getMyString(p);
return answer;
}
문제에서 풀라는 대로 풀었다. 단 이렇게 구현을 할 수 있다는 것을 알고 이 과정을 따라 잘 할수 있어야한다.