[programmers] 괄호 변환
in Algorithm on Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/60058
class Solution {
public String solution(String p) {
if(p.isEmpty()) return "";
String[] split = splitBalanced(p);
String u = split[0];
String v = split[1];
if(isCorrect(u)){
return u + solution(v);
}else{
StringBuilder sb = new StringBuilder();
sb.append("(");
sb.append(solution(v));
sb.append(")");
sb.append(reverse(u.substring(1, u.length() - 1)));
return sb.toString();
}
}
private String[] splitBalanced(String p){
int count = 0;
int i = 0;
for(;i < p.length(); i++){
if(p.charAt(i) =='(') count++;
else count--;
if(count ==0) break;
}
String u = p.substring(0, i+1);
String v = p.substring(i+1);
return new String[]{u,v};
}
private boolean isCorrect(String s){
int count = 0;
for(char c : s.toCharArray()){
if(c == '(') count++;
else{
count--;
if(count < 0 ) return false;
}
}
return count == 0;
}
private String reverse(String s){
StringBuilder sb = new StringBuilder();
for(char c : s.toCharArray()){
sb.append(c == '(' ? ')' : '(');
}
return sb.toString();
}
}