상세 컨텐츠

본문 제목

[백준] 9012. 괄호 | 스택 | 파이썬, 정답 소스코드

Coding Test/문제풀이

by yooputer 2024. 10. 9. 21:15

본문

https://www.acmicpc.net/problem/9012


문제 요약

  • '('와 ')'만으로 구성되어 있는 문자열이 주어진다. 
  • 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 
  • 한 쌍의 괄호 기호로 된 "()" 문자열은 기본 VPS이다. 만약 x가 VPS라면 이것을 하나의 괄호에 넣은 새로운 문자열 "(x)"도 VPS이다. 두 VPS를 접합시킨 새로운 문자열 xy도 VPS이다. 
  • 주어진 문자열이 VPS이면 YES를, 아니면 NO를 출력하라

문제 조건

Input

  • T : 테스트케이스의 개수
  • T개의 괄호 문자열

 

제한사항

  • 2 <= len(괄호 문자열) <= 50

접근 방법

  1. 스택을 이용한다
  2. '(' 문자열이면 스택에 push한다. ')' 문자열이면 스택에서 pop한다. 
  3. 만약 pop할 때 스택이 비어있거나 모든 문자열을 처리했는데 스택이 비어있지 않으면 VPS가 아니라고 판단한다. 

소스코드

def isVPS(str):
    stack = []

    for s in str:
        if s == '(':
            stack.append('(')
        else:
            if not stack:
                return False

            stack.pop()

    return False if stack else True

t = int(input())

while t > 0:
    print('YES' if isVPS(input()) else 'NO')
    t -= 1

관련글 더보기