반응형
문제 설명
"( ( ) ) " or "( )( )" 등 괄호가 정상적으로 닫혔을 경우에는 YES 를 출력하고
"( ( ) ( " or "( ( ) " 등 괄호가 정상적으로 닫히지 않았을 경우에는 NO를 출력하는 문제이다.
풀이 과정
스택의 pop을 이용하기 때문에 가장 처음에는 " ) " 가 나와야 한다.
그리고 " ) " 를 꺼내지 않았는데 " ( " 가 나오는 경우도 정상적인 괄호가 아니다. ex) " ()( "
스택의 뒤에서 하나씩 괄호를 꺼내게 되는데 " ) " 를 만나면 count를 +1 해주고
" ( " 를 만나면 count를 -1 해준다.
이 때, count가 0이라는 것은 닫힌 괄호가 준비되지 않았다는 뜻이므로 NO를 출력해준다.
마지막에, 모든 괄호를 빼왔을 때도, count가 0이 아니라는 것은 짝이 맞지 않는다는 뜻이므로 NO를 출력한다.
import sys
t = int(input())
for i in range(t):
count = 0
stack = list(sys.stdin.readline().strip())
flag = 0
while len(stack) > 0:
bracket = stack.pop()
if bracket == ")":
count += 1
elif bracket == "(":
if count == 0:
print("NO")
flag = 1
break
count -= 1
if flag == 0:
if count == 0:
print("YES")
else:
print("NO")
전체 문제 & 코드는 위의 깃에 정리되어 있습니다.
팔로우 & 맞팔은 환영입니다 !
반응형
'Algorithm > Stack & Queue' 카테고리의 다른 글
[백준] 17298번 오큰수 (Python 파이썬) (4) | 2021.04.15 |
---|---|
[백준] 1874번 스택 수열 (Python 파이썬) (4) | 2021.04.13 |
[백준] 4949번 균형잡힌 세상 (Python 파이썬) (3) | 2021.04.13 |
[백준] 10773번 제로 (Python 파이썬) (0) | 2021.04.12 |
[백준] 10828 스택 (Python 파이썬) (0) | 2021.04.12 |