package _16;
public class Main {
public static void main(String[] args) {
String s = "w((((a)ter(m(el((o)))(()n)";
System.out.println(solve(s));
}
public static String solve(String s) {
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
int openBrace = 0;
for(char c : s.toCharArray()) {
if(c == '(') {
openBrace++;
}else if(c == ')') {
if(openBrace == 0) {
continue;
}
openBrace--;
}
sb1.append(c);
}
for(int i=sb1.length()-1; i>=0; i--) {
if(sb1.charAt(i)=='(' && openBrace > 0) {
openBrace--;
continue;
}
sb2.append(sb1.charAt(i));
}
return sb2.reverse().toString();
}
}
openBrace를 활용하여 여는괄호와 닫는괄호의 개수 증/감을 해가면서 탐색
openBrace가 0이면 ) 가 필요없으므로 continue;
첫번째 for 종료 후 openBrace가 0보다 크면 ( 가 필요이상으로 많음 > 역방향으로 제거
'JAVA > 프로그래머스' 카테고리의 다른 글
18.수박수박수박수박수박수? (StringBuilder) (0) | 2021.02.28 |
---|---|
17. 일차하는 문자열 찾기 (0) | 2021.02.11 |
15. 더하기 (0) | 2021.02.11 |
13. 숫자 개수 (0) | 2021.01.04 |
12. 숫자사각형3 (0) | 2021.01.04 |