(2022년 4월 29일)
def pprint(stack):
if stack: # not empty
print("NO")
else:
print("YES")
def vps(array):
stack = []
while array:
ps = array.pop(0)
if stack: # not empty
if (stack[-1] == ps) or (stack[-1] == ')' and ps == '('):
stack.append(ps)
else:
stack.pop(-1)
else:
stack.append(ps)
pprint(stack)
n = int(input())
for _ in range(n):
vps(list(input()))
array[0]
(array의 첫번째 문자) == stack[-1]
(stack의 top) : stack.pop(-1)
함array[0]
(array의 첫번째 문자) != stack[-1]
(stack의 top) : stack.append(array[0])
함)
이 들어있고 (
가 들어올 차례인 경우에는 stack.pop(-1) 하면 안 됨(2023년 1월 3일) 다시 풀어 봄
# 2023-01-03 20:20:49
# https://www.acmicpc.net/problem/9012
def pprint(stack) :
if stack == [] :
print("YES")
else :
print("NO")
def vps(str) :
stack = []
for s in str :
if stack == [] :
stack.append(s)
elif stack[-1] == '(' and s == ')' :
stack.pop()
else :
stack.append(s)
pprint(stack)
n = int(input())
for _ in range(n) :
str = input()
vps(str)
stack.append(s)
: stack 구조에 넣기stack.pop()
: 마지막 원소 빼기(
이고, 새롭게 들어갈 원소가 )
인 경우만 존재elif stack[-1] == '(' and s == ')'
변수를
ps
라고 한 것에서 가독성이 떨어짐