알고리즘 문제풀이/프로그래머스 문제풀이

프로그래머스 문제 풀이 - 올바른 괄호(스택)

줄라이퍼스트 2025. 8. 4. 14:06

 

 

이 문제는 괄호 문자열이 올바르게 짝지어졌는지 판단하는 간단한 검증 문제

 

문자열 s가 "(", ")"만으로 구성되어 있을 때,
괄호들이 바르게 짝지어졌는지 확인하는 문제

예를 들면,

  • "()()", "(())()" → O
  • ")()(", "(()(" →  X

왼쪽 괄호 '('를 만나면 열어주고,
오른쪽 괄호 ')'를 만나면 닫아줍니다.
닫을 괄호가 없는데 닫으려고 하면? 틀린 괄호!

import java.util.ArrayDeque;

public class Solution {

    // s = '(' 또는 ')' 로만 이루어진 문자열
    public boolean solution(String s) {
        ArrayDeque<Character> stack = new ArrayDeque<>();

        // 문자열을 문자 배열로 변환
        for (char c : s.toCharArray()) {
            if (c == '(') {
                // 여는 괄호면 스택에 넣는다
                stack.push(c);
            } else {
                // 닫는 괄호를 만났을 때
                // 스택이 비었으면 짝이 될 여는 괄호가 없으므로 false
                if (stack.isEmpty()) {
                    return false;
                }
                // 짝이 되는 여는 괄호 하나를 제거
                stack.pop();
            }
        }

        // 모든 괄호가 짝지어졌다면 스택이 비어 있어야 함
        return stack.isEmpty();
    }

}