uploaded at 2023. 1. 5. 오후 5:17:05
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/60058
|
||||
|
||||
import java.lang.StringBuilder;
|
||||
class Solution {
|
||||
public String solution(String w) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String answer = "";
|
||||
if(w.equals("")) return "";
|
||||
if(good(w)){
|
||||
answer = w;
|
||||
} else {
|
||||
int sp = balP(w)+1;
|
||||
String u = w.substring(0,sp);
|
||||
String v = w.substring(sp,w.length());
|
||||
if(good(u)){
|
||||
sb.setLength(0);
|
||||
sb.append(u);
|
||||
sb.append(solution(v));
|
||||
return sb.toString();
|
||||
} else {
|
||||
sb.setLength(0);
|
||||
sb.append('(');
|
||||
sb.append(solution(v));
|
||||
sb.append(')');
|
||||
sb.append(del(u));
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
return answer;
|
||||
}
|
||||
private String del(String u){
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for(int a = 1; a < u.length()-1; a++){
|
||||
if(u.charAt(a)=='(') sb.append(')');
|
||||
else sb.append('(');
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
private int balP(String s){
|
||||
int c1 = 0, ans = s.length()-1;
|
||||
for(int a = 0; a < s.length(); a ++){
|
||||
if(s.charAt(a)=='(') c1++;
|
||||
else c1--;
|
||||
if(c1==0) {
|
||||
ans = a;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
private boolean bal(String s){
|
||||
int c1 = 0;
|
||||
for(int a = 0; a < s.length(); a ++){
|
||||
if(s.charAt(a)=='(') c1++;
|
||||
else c1--;
|
||||
}
|
||||
return c1==0;
|
||||
}
|
||||
private boolean good(String s){
|
||||
int c1 = 0;
|
||||
boolean ans = true;
|
||||
for(int a = 0; a < s.length(); a ++){
|
||||
if(s.charAt(a)=='(') c1++;
|
||||
else c1--;
|
||||
if(c1<0) {
|
||||
ans = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user