https://programmers.co.kr/learn/courses/30/lessons/60058
#include <string>
#include <vector>
#include <stack>
using namespace std;
string solution(string p) {
string answer = "";
if (p == "") return answer;
int i;
int left = 0, right = 0;
for (i = 0; i < p.length(); i++) {
if (p[i] == '(') left++;
else right++;
if (left == right) break;
}
i++;
string u = p.substr(0, i);
string v = p.substr(i, string::npos);
stack<char> st;
bool isCorrect = true;
for (int i = 0; i < u.length(); i++) {
if (u[i] == '(') st.push(u[i]);
else {
if (st.empty()) {
isCorrect = false;
break;
}
else st.pop();
}
}
if (!st.empty()) isCorrect = false;
if (isCorrect) {
answer += u + solution(v);
}
else {
answer += "(" + solution(v) + ")";
for (int i = 1; i < u.length() - 1; i++) {
if (u[i] == '(') answer += ")";
else answer += "(";
}
}
return answer;
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
[2020카카오공채] 가사 검색 (0) | 2020.03.30 |
---|---|
[2020카카오공채] 기둥과 보 설치 (0) | 2020.03.24 |
[2020카카오공채] 자물쇠와 열쇠 (0) | 2020.03.24 |
[2020카카오공채] 문자열 압축 (0) | 2020.03.23 |
[프로그래머스] 주식가격 (0) | 2020.03.19 |