본문 바로가기

코테/프로그래머스

올바른괄호 자바 문제풀이

class Solution {
    boolean solution(String s) {
        Stack<Character> stack = new Stack<>();

        for (char c : s.toCharArray()) {
            if(c == '(') {
                stack.add(c);
            } else {
                try {
                    stack.pop();
                } catch (EmptyStackException e) {
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }
}

문제 출제 의도대로 스택으로 푼다면 반복문이 끝났는데 스택이 비어있지 않거나 반복문 실행하며 pop을 하다가 exception이 발생한다면 올바르지 않은 괄호이다.

class Solution {
    boolean solution(String s) {
        int temp = 0;
        for(char c : s.toCharArray()){
            if(c == '(') temp += 1;
            else temp -= 1;
            if(temp < 0) return false;
        }

        if(temp == 0) return true;
        else return false;
    }
}

스택을 안쓰고 +1 -1 을 통해서도 충분히 구현할 수 있다.