Algorithm/inflearn

괄호문자제거

마닐라 2021. 9. 17. 23:01

 

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