BOJ-Algorithm

백준 9102번 - 괄호

bellhundred 2022. 1. 3. 23:50

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

 

9012번: 괄호

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

www.acmicpc.net

n = int(input())

arr = []
for i in range(n):
    arr.append([input()])

for test in arr:
    for question in test:
        stack = []
        flag = "YES"
        for word in question:
            if word == '(':
                stack.append('O')
            else:
                if not stack:
                    flag = "NO"
                    break
                else:
                    stack.pop(len(stack)-1)
        if flag=="NO":
            print(flag)
        elif flag=="YES" and not stack:
            print(flag)
        else:
            print("NO")

스택 문제다.

 

문제별로 stack을 초기화해 준 다음 flag를 True로 설정해 놓고 문자열 데이터를 확인해서 flag가 False로 바뀌지 않고, stack도 모두 정상적으로 비워져 있으면 YES를 반환하고 그렇지 않으면 NO를 반환하는 유형의 문제다.

 

고려해야 할 조건은

- 스택에 들어가 있는 괄호 '(' 가 없는데 ')' 가 입력된 경우가 있는가?

- 문자열을 전부 돌았을 때, 스택이 비워져 있는가?

 

정도가 될 듯 하다.