์ฃผ์ด์ง ๊ดํธ ๋ฌธ์์ด์ด ์ฌ๋ฐ๋ฅธ์ง ํ๋จํ๋ ๋ฌธ์ ์ด๋ค.
์ง์ด ๋ค ๋ง์ผ๋ฉด ๋ง๋๊ฑฐ ์๋๊ฐ?
({(){}})์ ์์์ ๋ถํฐ ์ฝ์ด๋๊ฐ๋ฉด ({( ์ดํ )๊ฐ ๋ค์ด์์ ๋ ๊ฐ์ฅ ์ต๊ทผ์ ๋ค์ด์จ ์ฌ๋ ๊ดํธ๋ฅผ ์์ ์ ({๊ฐ ๋๋ค. ({{}๊ฐ ๋์ ๋๋ ๋ค์ ({๊ฐ ๋๋ค. ์ดํ์ ๋ซ๋ ๊ดํธ๊ฐ ๋ค์ด์ค๋ฉด ๋๋จธ์ง ({๊ฐ ์์ด์ง๋ค.
์ ๋ฆฌํ์๋ฉด,
1. ์ฌ๋ ๊ดํธ๊ฐ ๋์ค๋ฉด ์คํ์ ์ถ๊ฐ
2. ๋ซ๋ ๊ดํธ๊ฐ ๋์ค๋ฉด
2-1. ์คํ์ด ๋น์ด์์ผ๋ฉด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ์
2-2. ์คํ์ top์ด ์ง์ด ๋ง์ง ์์ผ๋ฉด ์ฌ๋ฐ๋ฅด์ง ์์.
2-3. ์คํ์ top์ด ์ง์ด ๋ง๋ ๊ดํธ์ผ ๊ฒฝ์ฐ pop
3. ๋ชจ๋ ๊ณผ์ ์ ๋๋ธ ํ ์คํ์ ๊ดํธ๊ฐ ๋จ์์์ผ๋ฉด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ์, ๋จ์์์ง ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ ์.
import sys
while True:
answer=True
stack=[]
sent=sys.stdin.readline().rstrip()
if sent=='.':
break
for i in sent:
if i=='(' or i=='[':
stack.append(i)
elif i==']':
if len(stack) ==0:
answer=False
break
else:
gual=stack[-1]
if len(stack) ==0 or gual != '[':
answer=False
break
stack.pop()
elif i==')':
if len(stack) ==0:
answer=False
break
else:
gual=stack[-1]
if len(stack) ==0 or gual != '(':
answer=False
break
stack.pop()
if len(stack) == 0 and answer:
print('yes')
else:
print('no')
์ ๋ง์ ์์ธ์ฒ๋ฆฌ๋ฅผ ๋ซ์ด์ผํ๋ค๋๊ฒ์ด ํ๋ค์๋ค.