https://www.acmicpc.net/problem/4949
#2023.01.03
import sys
input = sys.stdin.readline
while(1):
word = input().rstrip()
if word=='.':
break
answer=0
stack=[]
for i in word:
if i=="(" or i=="[":
stack.append(i)
elif i==")":
if len(stack)==0:
answer=1
break
elif stack[-1]!="(":
answer=1
break
else:
stack.pop()
elif i=="]":
if len(stack)==0:
answer=1
break
elif stack[-1]!="[":
answer=1
break
else:
stack.pop()
if answer==0 and len(stack)==0:
print("yes")
else:
print("no")
스택에 괄호를 저장
1. "(" or "["일때는 스택에 저장
2. ")" or "]"일때는 스택의 제일 위의 값을 비교하기
2-1. "("일때는 스택이 비어있지 않고, 스택의 제일 위 값이 ")"이어야 함
2-2. "]"일떄는 스택이 비어있지 않고, 스택의 제일 위의 값이 "]"이어야 함
2-1, 2-2를 만족하지 못한다면 answer=1로 바꿔주고
마지막에 "yes"를 출력할지, "no"를 출력할지 결정!
'Problem Solving > BOJ' 카테고리의 다른 글
[DP] 1912 연속합 (0) | 2023.01.04 |
---|---|
[Stack] 1874 스택 수열 (0) | 2023.01.03 |
[Brute Force] 7568 덩치 (1) | 2023.01.03 |
[DP] 11660 구간합구하기5 (1) | 2023.01.02 |
[DP] 9465 스티커 (0) | 2023.01.02 |