sm 기술 블로그
153. 9012(괄호) - 파이썬 본문
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