프로그래머스 - 올바른 괄호 (JAVA)

2026. 4. 24. 02:01·CS/코딩테스트

프로그래머스 올바른 괄호 풀이 과정
어렵지 않게 한 번에 통과했다.
총 1번의 제출


1트 (정답)

→ 문자열을 순회하며 (는 스택에 push, )는 스택에서 pop한다.
→ )를 만났을 때 스택이 비어 있으면 짝이 맞지 않으므로 즉시 false를 반환한다.
→ 순회가 끝난 뒤 스택이 비어 있으면 모든 괄호가 올바르게 닫힌 것이다.

import java.util.*;

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

        for(char c : s.toCharArray()) {
            if(c=='(') stack.push(c);
            else {
                if(stack.isEmpty()) return false;
                stack.pop();
            }
        }

        return stack.isEmpty() ? true : false;
    }
}

왜 스택인가

괄호 문제를 보는 순간 스택이 떠오른 건 자연스러운 흐름이었다. (는 "나중에 닫혀야 할 괄호"이고, )는 "가장 최근에 열린 괄호를 닫는다"는 구조가 후입선출(LIFO) 과 정확히 맞아떨어지기 때문이다.

)를 만났을 때의 처리가 핵심이다. 이 시점에 스택이 비어 있다는 건 짝이 없는 닫는 괄호라는 의미이므로 바로 false를 반환한다. 비어 있지 않다면 가장 최근에 push된 (와 짝이 맞는 것이므로 pop한다.

순회가 끝난 뒤에는 스택이 비어 있어야 한다. 스택에 (가 남아 있다는 건 닫히지 않은 괄호가 있다는 의미이기 때문이다.

정리하면 false가 되는 케이스는 딱 두 가지다.

  • )를 만났는데 스택이 비어 있는 경우 → 짝 없는 닫는 괄호
  • 순회가 끝났는데 스택에 원소가 남아 있는 경우 → 닫히지 않은 여는 괄호

이 두 케이스만 막으면 나머지는 자연스럽게 true가 된다.


괄호 문제는 스택의 LIFO 특성과 구조가 딱 맞아 떨어지는 대표적인 유형이라, 이 문제를 풀면서 "스택을 써야겠다"는 판단은 거의 즉각적으로 나왔다. 앞으로 괄호, 중첩 구조, 뒤에서 검증해야 하는 패턴이 보이면 스택을 가장 먼저 떠올리는 습관을 유지해야겠다.

'CS > 코딩테스트' 카테고리의 다른 글

프로그래머스 - 다리를 지나는 트럭 (JAVA)  (0) 2026.04.24
프로그래머스 - 프로세스 (JAVA)  (0) 2026.04.24
프로그래머스 - 기능개발 (JAVA)  (0) 2026.04.24
프로그래머스 - 같은 숫자는 싫어 (JAVA)  (0) 2026.04.23
프로그래머스 - 베스트 앨범 (JAVA)  (0) 2026.04.23
'CS/코딩테스트' 카테고리의 다른 글
  • 프로그래머스 - 다리를 지나는 트럭 (JAVA)
  • 프로그래머스 - 프로세스 (JAVA)
  • 프로그래머스 - 기능개발 (JAVA)
  • 프로그래머스 - 같은 숫자는 싫어 (JAVA)
jupeternotebook
jupeternotebook
JUPETER의 취준, 개발, 일상
  • jupeternotebook
    JUPETER의 Notebook
    jupeternotebook
  • 전체
    오늘
    어제
    • 분류 전체보기 (18)
      • CS (18)
        • 자료구조 (2)
        • 알고리즘 (0)
        • 네트워크 (0)
        • 운영체제 (0)
        • 데이터베이스 (0)
        • 코딩테스트 (12)
        • GitHub (1)
        • Java (3)
      • 개발일지 (0)
      • 이모저모 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조
    해시
    스택
    큐
    해시맵
    정렬
    github
    java
    덱
    힙
    메모리
    코딩테스트
    jvm
    프로그래밍언어
    heap
    우선순위큐
    GC
    해시셋
    프로그래머스
    stack
    jre
    jdk
    git
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
jupeternotebook
프로그래머스 - 올바른 괄호 (JAVA)
상단으로

티스토리툴바