괄호 문자열이 주어졌을 때, '('와 ')' 괄호의 모양이 올바르게 배치되어 있는지 확인하는 프로그램을 작성
입력: 테스트 케이스 수, 테이트 케이스 수에 따른 괄호 문자열
출력: 각 테스트 케이스에 대해 주어진 괄호 문자열이 VPS인지, 아닌지 출력
stack 구조를 사용하여 해결하는 문제.
입력은 '('와 ')'로 구성된 문자열이기 때문에
1) '(' 일 경우, stack에 push.
2) ')' 일 경우,
- stack이 비어 있다면 --> 옳지 못한 괄호 문자열
- stack이 채워져 있다면 --> stack pop
3) 1), 2)를 거쳐서 최종적으로 나온 stack 원소 수가 1개 이상일 경우, '('와 ')' 짝이 맞지 않음을 의미 --> 옳지 못한 괄호 문자열
4) 1), 2)를 거쳐서 최종적으로 나온 stack 원소 수가 0개 이상일 경우, '('와 ')' 짝이 맞음을 의미 --> 옳은 문자열
def check_VPS(ps):
temp_stack = list()
for i in range(len(ps)):
if (ps[i] == ')'):
if (len(temp_stack) == 0):
print("NO")
return
else:
temp_stack.pop()
elif (ps[i] == '('):
temp_stack.append(ps[i])
if (len(temp_stack) == 0):
print("YES")
return
else:
print("NO")
return
if __name__ == '__main__':
T = input()
for i in range(int(T)):
ps = input()
check_VPS(ps)