본문으로 바로가기
728x90
반응형

▷ 문제

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

* 입력

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

*출력

남은 문자만 출력한다.

▷ 입력 예시

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

▷ 출력 예시

EFLM

▷ 풀이

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Stack;

public class Main {	
    public ArrayList<Character> solution(String str){
      ArrayList<Character> answer = new ArrayList<Character>();
      Stack<Character> stack = new Stack<Character>();

      for(char x : str.toCharArray()){
        if(x == '('){
          stack.push(x);
        } else if(x == ')'){
          stack.pop();
        }

        if (x != '(' && x != ')'){
          if(stack.isEmpty()){
            answer.add(x);
          }
        }
      }

      return answer;
    }

    public static void main(String[] args){
        Main main = new Main();
        Scanner kb = new Scanner(System.in);

        String str = kb.next();

        kb.close();

        for(char x : main.solution(str)){
          System.out.print(x);
        }
    }
  }
반응형