Data Structure/Stack

[백준 9012번] 괄호

킹우현 2023. 10. 18. 18:08

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

t = int(input())

inputs = [list(input()) for _ in range(t)]

def check_vps(str):

    stack = []

    for element in str:
        if element == '(':
            stack.append(element)
        elif element == ')':
            if not stack: # 스택이 비어있는 경우
                return False
            else:
                stack.pop()
        
    if stack:
        return False

    return True

for input_data in inputs:
    if check_vps(input_data):
        print("YES")
    else:
        print("NO")

이번 문제는 괄호로 이루어진 문자열이 올바른 형태의 괄호를 이루고 있는지 판단하는 문제이다. Stack 자료구조를 사용하여 여는 괄호일 경우에는 스택에 push하고, 닫는 괄호일 경우에는 여는 괄호를 pop하는 방식으로 풀이하면 된다.

 

다만 닫는 괄호에 맞는 여는 괄호가 없는 경우, 즉 닫는 괄호에서 스택이 비어있는 경우모든 과정을 거친 후에도 스택에 원소가 남아있는 경우에는 올바른 괄호 문자열이 아니라는 점을 조심하면 된다.

'Data Structure > Stack' 카테고리의 다른 글

[백준 2504번] 괄호의 값  (1) 2023.10.18
[백준 10799번] 쇠막대기  (1) 2023.10.18
[백준 4949번] 균형잡힌 세상  (0) 2023.10.18
[백준 17298번] 오큰수  (0) 2023.10.14
[프로그래머스 Lv.2] 올바른 괄호  (0) 2023.09.21