개발일기

올바른 괄호 - Java 본문

Algorithm

올바른 괄호 - Java

한둥둥 2024. 10. 21. 17:00

올바른 괄호 (스택/큐)

 

전형적인 Stack 문제이다.

그다지 어렵지 않았지만, 최대한 인덴트 1을 넘기지 않으려고 노력하였고, 그에따라서 processCharacter라는 메소드를 만들어서 문제를 풀었다.

또한 IllegalArgumentException을 사용하여 에러가 나왔을 때, try -catch문을 사용하여 에러를 잡고 이를 false로 던져주도록 만들었다. 

마지막 return 은 stack.isEmpty()를 통해서 비어있는지 확인해서 리턴했다. 

import java.util.*;

class Solution {
   
    boolean solution(String s) {
        Stack<Character> stack = new Stack<>();
        try{
            s.chars()
             .mapToObj(ch -> (char) ch)
             .forEach(ch -> processCharacter(ch, stack));
        } catch(IllegalArgumentException e) {
            return false;
        }
        
    
        return stack.isEmpty();
    }
    
    private static void processCharacter(char ch, Stack<Character> stack) {
        switch(ch) {
                case '(' -> stack.push(ch);
                case ')' -> {
                    if(stack.isEmpty()) throw new IllegalArgumentException("순서 값 오류");
                    stack.pop();
                }
        }
    }

    
    
}