t = int(input())
inputs = [list(input()) for _ in range(t)]
def check_vps(str):
stack = []
for element in str:
if element == '(':
stack.append(element)
elif element == ')':
if not stack: # 스택이 비어있는 경우
return False
else:
stack.pop()
if stack:
return False
return True
for input_data in inputs:
if check_vps(input_data):
print("YES")
else:
print("NO")
이번 문제는 괄호로 이루어진 문자열이 올바른 형태의 괄호를 이루고 있는지 판단하는 문제이다. Stack 자료구조를 사용하여 여는 괄호일 경우에는 스택에 push하고, 닫는 괄호일 경우에는 여는 괄호를 pop하는 방식으로 풀이하면 된다.
다만 닫는 괄호에 맞는 여는 괄호가 없는 경우, 즉 닫는 괄호에서 스택이 비어있는 경우와 모든 과정을 거친 후에도 스택에 원소가 남아있는 경우에는 올바른 괄호 문자열이 아니라는 점을 조심하면 된다.
'Data Structure 🛠️ > Stack' 카테고리의 다른 글
[백준 2504번] 괄호의 값 (1) | 2023.10.18 |
---|---|
[백준 10799번] 쇠막대기 (1) | 2023.10.18 |
[백준 4949번] 균형잡힌 세상 (0) | 2023.10.18 |
[백준 17298번] 오큰수 (0) | 2023.10.14 |
[프로그래머스 Lv.2] 올바른 괄호 (0) | 2023.09.21 |