알고리즘/백준 문제풀이

[백준] 9012 괄호 파이썬 풀이 (스택)

자바칩 프라푸치노 2021. 6. 21. 16:43

코드

num= int(input())

for i in range(num):
    brackets = list(input())
    # print(brackets)
    stack = 0

    for bracket in brackets:
        if bracket == '(':
            stack+=1
            # print(f'(이 나오면{stack}')
        else:
            stack -=1
            # print(f')이 나오면{stack}')
            if stack <0:  #)(인 경우가 나오면 -1 1 이 되어서 0 이되므로
                break

    if stack == 0:
        print('YES')
    else: 
        print('NO')


풀이

stack배열을 만들어서 넣고 빼고 해도 되지만 편하게 넣는 것을 +1 , 빼는 것을 -1로 하겠다.

stack변수에 (이 나오면 +1을 하고

)이 나오면 -1을 한다.

그러다가 -1을 했는데 stack이 마이너스가 되면 break를 하고 나와서 no를 print한다

왜 저기에 break문을 써줘야하냐면

저기에 break를 안쓰고

마지막에 if stack == 0일때만 확인해준다면

)( 이렇게 들어왔을때도 stack이 0이돼서 YES가 나오기 때문이다.

728x90