코드
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
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 11050 이항계수 1 파이썬 풀이 (정수론 및 조합론) (0) | 2021.06.21 |
---|---|
[백준] 1934 최소 공배수 파이썬 풀이 (정수론 및 조합론) (0) | 2021.06.21 |
[백준] 10773 제로 파이썬 풀이 (스택) (0) | 2021.06.21 |
[백준] 10828 스택 파이썬 풀이 (스택) (0) | 2021.06.21 |
[백준] 11651 좌표 정렬하기 2 파이썬 풀이 (정렬) (0) | 2021.06.21 |