본문 바로가기

Algorithm/Inflearn

[Inflearn] 자바 알고리즘 문제풀이 #05-02 2. 괄호문자제거

문제

설명

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

 

입력 

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

 

출력 

남은 문자만 출력한다.

 

 

 

내 풀이
import java.util.Scanner;
import java.util.Stack;

public class Main5_2 {
    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(char x : stack) answer+=x;
        return answer;
    }

    public static void main(String[] args) {
        Main5_2 T = new Main5_2();
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(T.Solution(str));
    }
}

 

 

 

선생님 풀이
import java.util.Scanner;
import java.util.Stack;

public class Main5_2 {
    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) {
        Main5_2 T = new Main5_2();
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(T.Solution(str));
    }
}

stack에 남은 것들을 출력하는 부분만 다르다.

 

 

 

결과