old/Algorithm
5주차 - 카카오 문제 (괄호변환)
hYhY1234
2020. 7. 12. 20:09
728x90
코드
#include <string>
#include <vector>
#include <stack>
#include <iostream>
using namespace std;
bool is_correct(string a){
stack<char> s;
s.push(a[0]);
for(int i = 1; i < a.size(); i++){
if(a[i] == '('){
s.push(a[i]);
}else{
if(s.empty()){
return false;
}else{
s.pop();
}
}
}
if(s.empty()){
return true;
}else{
return false;
}
}
string converter(string w){
if(w == ""){
return "";
}
int left = 0;
int right = 0;
string u = "";
string v = "";
for(int i = 0; i < w.size(); i++){
if(w[i] == '('){
left++;
}else{
right++;
}
if(left == right){
u = w.substr(0, i+1);
v = w.substr(i+1);
break;
}
}
if(is_correct(u)){
return u + converter(v);
}else{
string temp = "(" + converter(v) + ")";
u = u.substr(1, u.size()-2);
for(int i = 0; i < u.size(); i++){
if(u[i] == '('){
temp += ")";
}else{
temp += "(";
}
}
return temp;
}
return "hello";
}
string solution(string p) {
string answer = converter(p);
return answer;
}
규칙대로 재귀함수 호출!