n = int(input())
for j in range(n) :
l = input()
st = 0
for i in range(len(l)) :
if l[i] == '(' :
st = st + 1
elif l[i] == ')' :
st = st - 1
if st < 0 :
print('NO')
break
if st == 0 :
print('YES')
elif st > 0 :
print('NO')
|
괄호의 종류가 하나이기 때문에 리스트 형태의 스택을 만들지 않고 그냥 정수로 세도 된다.
마지막에 스택이 0이라면 정상적인 괄호열이고, 중간에 음수가 되거나 마지막에 0이 아니라면 틀린 괄호열이다.
'Week 01 ~ 04 : 알고리즘 문제 풀이' 카테고리의 다른 글
파이썬 백준 2493 탑 (0) | 2021.11.13 |
---|---|
파이썬 백준 17608 막대기 (0) | 2021.11.13 |
파이썬 백준 10773 제로 (0) | 2021.11.13 |
파이썬 백준 2504 괄호의 값 (0) | 2021.11.13 |
파이썬 백준 10828 스택 (0) | 2021.11.12 |