백준 - 9012 (Python) - 괄호

박준영·2021년 6월 19일
0
post-thumbnail

백준 9012

괄호

  • 괄호 문자열(Parenthesis String, PS) -> 두개의 괄호 기호"(" 와 ")" 만으로 구성되어 있는 문자열
  • 한 쌍의 괄호 기호로 된 "()" 문자열 -> 기본 VPS
  • x가 VPS라면 (괄호로 이루어져 있다면) "(x)"도 VPS
  • y도 VPS라면 xy도 VPS

    ex)
    "(())()" -> VPS(O),
    "(()" -> VPS(X) - 괄호의 짝이 맞지 않음.

문제는 VPS가 맞다면 "YES", 아니라면 "NO"를 출력해주면 된다.

N = int(input())
for i in range(N): 
    vps = input()
    vps_list = list(vps)
    sum = 0
    for i in vps_list:
        if i == '(': #여는 괄호는 + 1
            sum += 1
        elif i == ')': #닫는 괄호는 - 1
            sum -= 1
        if sum < 0:
            print('NO') #sum이 0보다 작아진다는 뜻은 닫는 괄호의 개수가 더 많다는 뜻
            break
    if sum > 0:
        print('NO') #sum이 0보다 크다는 뜻은 여는 괄호의 개수가 더 많다는 뜻
    elif sum == 0:
        print('YES') 

인풋값의 VPS 문자열을 vps_list라는 변수에 담아주고
i 값이 "(" 여는 괄호라면 sum 변수 값에 + 1, ")" 닫는 괄호라면 sum 변수 값에 - 1을 해준다. sum의 값이 0이면 괄호의 짝이 맞다는 뜻.

그러므로 sum이 0보다 작다면 닫는 괄호의 개수가 더 많다는 뜻이니 "NO"를 출력하고 sum이 0보다 크다면 여는 괄호의 개수가 더 많다는 뜻이니 "YES"를 출력하면 문제를 풀 수 있다.

0개의 댓글