https://programmers.co.kr/learn/courses/30/lessons/60058
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string u, v;
int checkRight() {
int sum = 0;
int i = 0;
for (; i < u.size(); i++) {
if ((sum == 0) && (u[i] == ')')) {
sum = 1;
break;
}
if (u[i] == '(') sum++;
else sum--;
}
return sum;
}
void DivideStr() {
bool flag = true;
int sum = 0;
int i = 0;
for (; i < u.size(); i++) {
if (u[i] == '(') sum++;
else sum--;
if (sum==0) {
v = u.substr(i+1);
u = u.substr(0,i+1);
}
}
}
string solution(string p) {
string answer = "";
u = p;
if (checkRight() == 0)
return p;
while (true) {
DivideStr();
//u가 올바른 문자열
if (checkRight() == 0) {
answer += u;
u = v;
answer += solution(u);
break;
}
//u가 올바른 문자열이 아님
else {
answer += "(";
string tmp = u;
u = v;
answer += solution(u);
answer += ")";
for (int i = 1; i < tmp.size() - 1; i++) {
if (tmp[i] == '(') answer += ")";
else {
answer += "(";
}
}
break;
}
}
return answer;
}
'프로그래머스' 카테고리의 다른 글
자물쇠와 열쇠 C++ (0) | 2021.08.22 |
---|---|
매출 하락 최소화 C++ (0) | 2021.08.09 |
카드 짝 맞추기 C++ (0) | 2021.08.01 |
광고 삽입 C++ (0) | 2021.07.07 |
순위 검색 C++ (0) | 2021.07.01 |