import java.util.*;
public class Main {
public String solution(String str){
String answer = "";
Stack<Character> stack = new Stack<>();
for(char x: str.toCharArray()){
if(x == ')'){
while(stack.pop()!='('); // 여는 괄호까지 꺼내고 while문 멈춤
}
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 sc = new Scanner(System.in);
String str = sc.next();
System.out.println(T.solution(str));
}
}
pop은 스택의 제일 상단에 있는 것을 꺼내고 그 꺼낸 것을 리턴받는다.
여는 괄호나 알파벳이라면 스택에 push하고, 닫는 괄호라면 여는괄호가 나오지 않을 때까지 pop해 꺼낸다.
그리고 스택에 남아있는 것들을 출력한다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 알고리즘 : Stack- 후위식 연산(postfix) (0) | 2022.07.12 |
---|---|
[JAVA] 알고리즘 : Stack- 크레인 인형뽑기(카카오) (0) | 2022.07.12 |
[JAVA] 알고리즘 : Stack- 올바른 괄호 (0) | 2022.07.11 |
[JAVA] 백준 13414번- 수강신청 (0) | 2022.07.07 |
[JAVA] 백준 16499번- 동일한 단어 그룹화하기 (0) | 2022.07.06 |