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를 반환하는 유형의 문제다.
고려해야 할 조건은
- 스택에 들어가 있는 괄호 '(' 가 없는데 ')' 가 입력된 경우가 있는가?
- 문자열을 전부 돌았을 때, 스택이 비워져 있는가?
정도가 될 듯 하다.