def push(stack, x):
stack.append(x)
def pop(stack):
return stack.pop()
def top(stack):
return stack[-1] if stack else -1
while(True):
sentence = input()
if(sentence == "."):
break
else:
opend_stack = []
sentence_check = True
for i in sentence:
if(i == "(" or i == "["):
push(opend_stack, i)
elif i == ")":
if(top(opend_stack) == "("):
pop(opend_stack)
else:
if(not opend_stack or top(opend_stack) == "["):
sentence_check = False
break
elif i == "]":
if(top(opend_stack) == "["):
pop(opend_stack)
else:
if(not opend_stack or top(opend_stack) == "("):
sentence_check = False
break
if(sentence_check and not opend_stack):
print("yes")
else:
print("no")
중간중간 비어있는 스택이나 문제에서 제공된 예제를 전부 통과하고,
마지막에 "((((" 반례정도만 생각해주면 쉽게 해결 가능할 것입니다.
'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글
백준 2164번(python) (0) | 2020.05.03 |
---|---|
백준 18258번(python) (0) | 2020.05.03 |
백준 10773번(python) (0) | 2020.05.02 |
백준 2004번(python) (0) | 2020.04.28 |
백준 1676번(python) (0) | 2020.04.27 |