괄호 문자 제거

문제

설명

입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.

입력

첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.

출력

남은 문자만 출력한다.

예시 입력 1

(A(BC)D)EF(G(H)(IJ)K)LM(N)

예시 출력 1

EFLM

해결방법

  • 스택으로 구현하여, 닫는 괄호를 만나면 여는 괄호를 만날 때 까지 pop()을 한다.

코드

import java.util.*;

class Main {
    public String solution(String str) {
        String answer = "";
        Stack<Character> stack = new Stack<>();
        for (char x : str.toCharArray()) {
            // 닫는 괄호를 만나면 (어차피 여는 괄호는 있으므로)
            if (x == ')') {
                // 그 전의 것들을 전부 제거한다. 여는 괄호를 만날때 까지.
                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.Main T = new Main.Main();
        Scanner kb = new Scanner(System.in);
        String str = kb.next();
        System.out.println(T.solution(str));
    }
}


© 2024. Chiptune93 All rights reserved.