Programers:かっこを変換
14005 ワード
かっこの変換
コード#コード# #include <string>
#include <vector>
#include <stack>
#include <iostream>
//1203 ~ 1:01
using namespace std;
bool checkStr(string s){
stack<char> check;
check.push(s[0]);
for(int i=1;i<s.length();i++){
if(!check.empty() && (check.top() == '(' && s[i] == ')')) check.pop();
else check.push(s[i]);
}
if(check.empty()) return true;
return false;
}
string recur(string w){
string u="",v="";
stack<char> div;
if(w.length() == 0) return "";
if(checkStr(w)) return w;
div.push(w[0]);
/* u와 v로 분리 */
for(int i=1;i<w.length();i++){
if((div.top()=='(' && w[i]==')') || (div.top()==')' && w[i]=='(')){
div.pop();
if(div.empty()){
u = w.substr(0,i+1);
v = w.substr(i+1);
break;
}
}else div.push(w[i]);
}
/* u가 올바른 괄호문자열인지 검사 */
bool result = checkStr(u);
/* 올바른 경우 : v로 다시 1번부터 재귀적 수행 */
string str;
if(result == true) str = u + recur(v);
/* 올바르지 않은 경우 : */
else{
string newU="";
u.erase(0,1);
u.erase(u.length()-1,1);
for(int i=0;i<u.length();i++) newU += (u[i] == '(' ? ")" : "(");
str = "("+ recur(v) +")" + newU;
}
return str;
}
string solution(string p) {
string answer = "";
answer = recur(p);
return answer;
}
#include <string>
#include <vector>
#include <stack>
#include <iostream>
//1203 ~ 1:01
using namespace std;
bool checkStr(string s){
stack<char> check;
check.push(s[0]);
for(int i=1;i<s.length();i++){
if(!check.empty() && (check.top() == '(' && s[i] == ')')) check.pop();
else check.push(s[i]);
}
if(check.empty()) return true;
return false;
}
string recur(string w){
string u="",v="";
stack<char> div;
if(w.length() == 0) return "";
if(checkStr(w)) return w;
div.push(w[0]);
/* u와 v로 분리 */
for(int i=1;i<w.length();i++){
if((div.top()=='(' && w[i]==')') || (div.top()==')' && w[i]=='(')){
div.pop();
if(div.empty()){
u = w.substr(0,i+1);
v = w.substr(i+1);
break;
}
}else div.push(w[i]);
}
/* u가 올바른 괄호문자열인지 검사 */
bool result = checkStr(u);
/* 올바른 경우 : v로 다시 1번부터 재귀적 수행 */
string str;
if(result == true) str = u + recur(v);
/* 올바르지 않은 경우 : */
else{
string newU="";
u.erase(0,1);
u.erase(u.length()-1,1);
for(int i=0;i<u.length();i++) newU += (u[i] == '(' ? ")" : "(");
str = "("+ recur(v) +")" + newU;
}
return str;
}
string solution(string p) {
string answer = "";
answer = recur(p);
return answer;
}
Reference
この問題について(Programers:かっこを変換), 我々は、より多くの情報をここで見つけました https://velog.io/@neity16/Programers-괄호-변환テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol