문제
풀이
- 괄호가 짝끼리 매칭되어 닫히면 yes, 아니면 no를 출력해야하는 문제이다.
- '.'를 기준으로 입력받았다.
stack(Last In First Out)
형태로 접근해야지 가장 안쪽에있는 괄호부터 닫게 할 수 있다.
- 조건문에 맞춰 pop을 하고 괄호가 짝끼리 매칭된다면 stack이 빈 리스트여야 한다. ex)
()(
코드
def solve(word):
stack = []
for x in word:
if x == '(' or x == '[':
stack.append(x)
elif x == ')':
if stack:
bracket = stack.pop()
if bracket != '(':
return 'no'
else:
return 'no'
elif x == ']':
if stack:
bracket = stack.pop()
if bracket != '[':
return 'no'
else:
return 'no'
return 'yes' if not stack else 'no'
while True:
word = str(input().split('.')[0])
if not word:
break
print(solve(word))
결과
출처 & 깃허브
BOJ 4949
GITHUB