: 3번 예제를 보고 왜 이렇게 해야하지 생각이 들지만, 시키는 대로 그대로 하면된다.
4-1 ~ 4-3번 부분에 대한 의구심이 생기지만, 시키는 대로만 하자!
#include <string>
#include <vector>
using namespace std;
string solution(string p) {
string answer = "";
if(p.empty())
return p;
string u = "";
//v는 빈문자열이 될수 잇다.
string v = "";
int cnt = 0;
for(int i = 0; i < p.length(); i++)
{
if(p[i] == '(')
{
cnt++;
}
else
{
cnt--;
}
//올바른인지, 균형 잡힌지 구분해야 한다. u가
if(cnt == 0)
{
u = p.substr(0, i + 1);
v = p.substr(i + 1);
//올바른 일 경우
if(p[0] == '(')
{
answer = u + solution(v);
}
//균형 잡힌 일 경우
else
{
answer = '('+ solution(v) + ')';
for(int j = 1; j < u.length() - 1; j++)
{
if(u[j] == '(')
answer += ')';
else
answer += '(';
}
}
break;
}
}
return answer;
}