ALGORITHM

[JAVA] 알고리즘 : Stack- 괄호문자제거

연듀 2022. 7. 11. 10:19

 

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해 꺼낸다. 

그리고 스택에 남아있는 것들을 출력한다.