import java.util.Scanner;
import java.util.Stack;
public class Main {
public String solution(String str) {
String answer = "";
//(A(BC)D)EF(G(H)(IJ)K)LM(N)
//괄호의 짝을 찾으면 괄호포함 사이의 문자열 pop
//여는 괄호까지 pop 시켜버리면 됨.
Stack<Character> stack = new Stack<>();
for(char x : str.toCharArray()) {
if (x == ')') {
//'('까지 pop 시켜야함.
//★ pop은 꺼낸 값을 return 하기도 함.
//꺼내고 + 꺼낸 값을 return
//여는 괄호를 꺼낸 후에 멈춘다!
//일단 꺼낸 상태기 때문에 ')'이전부터 '('까지 싹 다 꺼내짐
while(stack.pop()!='(');
} else stack.push(x);
}
for(int i = 0; i < stack.size(); i++) {
answer += stack.get(i);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String s = kb.next();
System.out.print(T.solution(s));
}
}
'Algorithm > inflearn' 카테고리의 다른 글
후위식 연산 (0) | 2021.09.17 |
---|---|
★크레인 인형뽑기 (0) | 2021.09.17 |
#올바른 괄호 (0) | 2021.09.17 |
★K번째 큰 수(TreeSet) (0) | 2021.09.16 |
★모든 아나그램 찾기(Hash, sliding Window : 시간복잡도 O(n)) (0) | 2021.09.16 |