T = int(input())
for i in range(T):
stk = []
isVPS = True
for ch in input():
if ch == '(':
stk.append(ch)
else:
if len(stk) > 0:
stk.pop()
else:
isVPS = False
break
if len(stk) > 0:
isVPS = False
print('YES' if isVPS else 'NO')
괄호가 쌍을 이루면 VPS다.
스택구조로 생각해야 한다.
여는 괄호가 무조건 먼저 들어가야 VPS를 이룰 수 있다.
여는 괄호가 들어가 있는 상태에서 닫는 괄호를 만나면 스택에 들어있는 여는 괄호를 삭제해준다.
스택이 비어있는데 닫는 괄호가 들어오면 isVPS를 False로 바꿔주고 반복문을 탈출하면 된다.
문자열 갯수만큼 반복을 다 돌았는데 스택이 비어있지 않은 것 또한 VPS가 아니다.
한 줄씩 판별할 때마다 isVPS가 True 이면 'YES'를 반환하고 False이면 'No'를 반환하면 된다.
'알고리즘 문제풀이 > Python3' 카테고리의 다른 글
[Python3, 파이썬] 백준 11286번 절댓값 힙 (0) | 2022.03.22 |
---|---|
[Python3, 파이썬] 백준 2164 카드2 (0) | 2022.03.21 |
비선형 자료구조 - 우선순위 큐, 딕셔너리, 집합 (0) | 2022.03.21 |
선형 자료구조 - 배열, 연결 리스트, 스택, 큐 (0) | 2022.03.21 |
백준 15552 빠른 A+B (0) | 2022.03.21 |