https://www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

풀이 과정

1. 문자열 도중에 )이 나온 횟수가 (이 나온 횟수보다 많아지면 안된다

2. 문자열이 끝날 때 (이 나온 횟수와 )이 나온 횟수는 같아야 한다

 

숫자 변수 하나 or 스택을 이용하여 위 조건을 문자열이 만족하는지 검사하면 된다. 스택을 이용하여 검사하려면 (이 나오면 원소를 하나 push, )이 나오면 원소를 하나 pop한다. 스택이 비었는데 pop을 하게 되는 문자열이면 괄호 문자열이 아니고, 문자열을 다 검사했는데 스택에 원소가 남아있으면 괄호 문자열이 아니다. 이외의 경우면 괄호 문자열이게 된다.

 

코드

import sys

T = int(sys.stdin.readline())

for i in range(T):
    ps = sys.stdin.readline().rstrip()
    stack = []
    noCount = False
    for j in ps:
        if j == '(':
            stack.append(1)
        elif j == ')':
            if len(stack) == 0:
                noCount = True
                break
            else: del stack[-1]

    if len(stack) == 0 and noCount == False: print('YES')
    else: print('NO')

+ Recent posts