sm 기술 블로그

153. 9012(괄호) - 파이썬 본문

문제/백준_파이썬

153. 9012(괄호) - 파이썬

sm_hope 2022. 7. 21. 20:20
import sys
input = sys.stdin.readline

T = int(input())

for i in range(T):
    stack = []
    a = input()
    for j in a:
        if j == '(':
            stack.append(j)
        elif j == ')':
            try:
                stack.pop()
            except:
                stack.append(1)
                break
    if not stack:
        print("YES")
    else:
        print("NO")

문제요약

괄호가 형식이 맞으면 YES를 아니면 NO를 출력하라.

설명

간단한 문제이다.

 

입력받은 값을 앞에서 부터 뽑아내면서 만약 '('가 나오면 스택에 값을 넣고 ')'가 나온다면 스택에 있는 값을 빼낸다.

[만약 뒤에서 부터 진행한다면 ')'값을 넣고 '('을 빼야할 것이다.]

 

        if j == '(':
            stack.append(j)

( 인 경우에는 스택에 값을 넣는다.

 

        elif j == ')':
            try:
                stack.pop()
            except:
                stack.append(1)
                break

) 인 경우에는 스택에 값을 뺀다.

빼봤을 때 값이 없다면 에러가 발생하는데 에러가 발생하면 stack에 1을 넣고 입력값 반복문을 종료한다.

 

    if not stack:
        print("YES")
    else:
        print("NO")

스택 안에 값이 있다면 형식이 안맞는 것이므로 NO를 출력하고 스택내에 값이 없다면 YES를 출력한다.

'문제 > 백준_파이썬' 카테고리의 다른 글

155. 1874(스택 수열) - 파이썬  (0) 2022.07.22
154. 4949(균형잡힌 세상) - 파이썬  (0) 2022.07.22
152. 10773(제로) - 자바  (0) 2022.07.20
152. 10773(제로) - 파이썬  (0) 2022.07.20
151. 10828(스택) - 파이썬  (0) 2022.07.20
Comments