알고리즘/백준 문제풀이
[백준] 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