저번에 풀었던 문제에는 소괄호의 짝이 맞는지만 찾는 것이었지만 이 문제는 업그레이드 버전이다.
문자열 내에 대괄호와 소괄호의 짝이 맞는지를 찾는 문제이며,
만약 한 줄에 .만이 존재해도 균형잡힌 문자열이다.
- 풀이 방법
문자열을 입력 받는다.
좌측 괄호('(', '[')인지 검사한다.
만약 좌측 괄호라면 스택에 넣어준다.우측 괄호인지(')', ']') 검사한다.
만약 우측 괄호라면 스택의 원소와 비교하여 괄호의 균형이 맞는지 검사한다.입력받은 문자열이 종료 문자 '.'라면 종료를, 아니라면 문제에서 원하는 출력을 수행한다.
while True:
s = input()
if s == '.':
break
stk = []
temp = True
for i in s:
if i == '(' or i == '[':
stk.append(i)
elif i == ')':
if not stk or stk[-1] == '[':
temp = False
break
elif stk[-1] == '(':
stk.pop()
elif i == ']':
if not stk or stk[-1] == '(':
temp = False
break
elif stk[-1] == '[':
stk.pop()
if temp == True and not stk:
print('yes')
else:
print('no')