9021. 괄호 (python)

곽수경·2023년 10월 20일

9021. 괄호

문제

'('와 ')'로만 이루어진 문자열을 PS(Parenthesis String)라 하는데 이 중 괄호 모양이 바르게 구성된 문자열을 VPS(Valid Parenthesis String)이라고 부른다. 입력으로 주어지는 괄호 문자열이 VPS인지 아닌지 판별해야 한다.

입력

첫째 줄에는 테스트 케이스의 개수 T가 주어지고 각 테스트 케이스로는 괄호 문자열(PS)이 주어진다.

출력

주어진 테스트 케이스가 VPS이면 "YES", VPS가 아니면 "NO"를 출력한다.

import sys

n = int(input())
input = [sys.stdin.readline().strip() for _ in range(n)]

def top(arr):
	# 현재 스택 맨 위에 있는 요소 확인
    if (len(arr)==0): return -1
    return arr[-1]

def printAnswer(arr):
	# stack에 남아있는 괄호가 없으면 VPS
	# 남아있는 괄호가 있으면 VPS가 아님 
    if (len(arr) == 0): print("YES")
    else: print("NO")

for ps in input:
    stack = []
    for p in ps:
        if p == ')' and top(stack) == '(':
            stack.pop()
        # 괄호가 짝을 찾으면 괄호 쌍을 제거
        else: stack.append(p)
		# 짝이 아니면 괄호를 stack에 추가
    printAnswer(stack)
profile
공부 기록

0개의 댓글