[알고리즘] Stack, Queue (2) : 괄호 문자 제거(JAVA)

ho's·2022년 6월 6일
0

👽 괄호 문자 제거

👾 문제

  • 소괄호 사이에 있는 문자를 제거하고 남은 문자만 출력하는 프로그램이다.

👾 풀이

🤖 어떻게 문제를 풀 것인가?

  • Stack을 사용하자.
  • () 안의 문자는 입력이 안된다.
  • ( 입력 된다면 Stack.push
  • ) 입력 된다면 Stack.pop
  • 만약 Stack이 비어 있다면, 문자열을 저장한다.

👾 소스코드

🤖 메인 메소드만 이용

package algolecture;

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

public class Main37 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Stack<Character> stack = new Stack<>();
        String str = scan.nextLine();
        String answer = "";
        for(char x : str.toCharArray()){
            if(x == '(')
                stack.push(x);
            else if(x ==')')
                stack.pop();
            else if(stack.isEmpty()){
                answer += x;
            }
        }

        System.out.print(answer);
    }
}

🤖 solution 메소드를 따로 저장하자.

package algolecture;

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

public class Main37_solution {

    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) {
        Main37_solution T = new Main37_solution();
        Scanner kb = new Scanner(System.in);
        String str = kb.next();
        System.out.println(T.solution(str));
    }
}


profile
그래야만 한다

0개의 댓글