[JAVA] 35. 괄호문자 제거 -STACK

2021. 10. 24. 12:31
728x90

설명

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

입력

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

출력

남은 문자만 출력한다.

예시 입력 1 

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

예시 출력 1

EFLM

 

 


내 풀이

 



import java.util.*;
  
public class Main {
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
     	String str = in.next();
        Stack<Character> stack = new Stack<>();
        String answer = "";

        for(char ch : str.toCharArray()){
            if(ch == '('){
                stack.push(ch);
            }else if(ch == ')'){
                stack.pop();
            }else{
                if(stack.isEmpty()){
                    answer += ch;
                }
            }
        }

        System.out.println(answer);
  }
}

 

 

다른 풀이

 

import java.util.*;
  
public class Main {
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    
    	String str = in.next();
        Stack<Character> stack = new Stack<>();
        String answer = "";

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

        for(char ch : stack){
            answer += ch;
        }
    System.out.println( answer);
  }
}
728x90

BELATED ARTICLES

more