[문제풀이] 05-02. 괄호 문자 제거

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 11월 1일
0

인프런, 자바(Java) 알고리즘 문제풀이

Stack, Queue(자료구조) - 0502. 괄호 문자 제거


🗒️ 문제


🎈 나의 풀이

	private static String solution(String[] strArr) {
        StringBuilder sb = new StringBuilder();
        Stack<String> stack = new Stack<>();

        for(String s : strArr) {
            if(s.equals("(")) stack.push(s);
            else if(s.equals(")")) stack.pop();
            else if(stack.size() == 0) sb.append(s);
        }

        return sb.toString();
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] strArr = sc.nextLine().split("");
        System.out.println(solution(strArr));
    }


🖍️ 강의 풀이

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


💬 짚어가기

해당 문제는 stack을 이용하여 풀 수 있다. 나의 풀이는 다음의 3가지 경우로 나누어 구현하였다.

  1. (인 경우 : push
  2. )인 경우 : pop
  3. 숫자인 경우 : 스택의 사이즈가 0이면 answer에 추가
    (모든 괄호가 닫힌 상태를 의미)

강의에서는 2가지 경우로 나누어 구현하였다.

  1. ( 또는 숫자인 경우 : push
  2. )인 경우 : 스택에서 (가 나올 때까지 모두 pop
profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글