ํ์ด
์ฒ์์ replace ๋ฅผ ์ด์ฉํด์ผํ๋ ์ถ์์ผ๋ ๋ค๋ฅธ๋ถ๋ค์ ํ์ด๋ฅผ ๋ณด๊ณ ์คํ์ ํ์ฉํ ๊ตฌํ๋ฌธ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์๋ค.
๊ฐ๋จํ ์์๋ฅผ ๋ค์ด๋ณด์.
s = (()[[]])([])
์ด๋ผ๊ณ ์ฃผ์ด์ก์๋,
stack์ ์๋์ ๊ฐ์ด ์์ฑ๋๋ค.
['(']
['(', '(']
['(', 2]
['(', 2, '[']
['(', 2, '[', '[']
['(', 2, '[', 3]
['(', 2, 9]
[22]
[22, '(']
[22, '(', '[']
[22, '(', 3]
[22, 6]
์ฌ๊ธฐ์ ์์์ผ ํ ์ ์ ์ฃผ์ด์ง ๋ฌธ์์ด์ ์์๋๋ก ๋ฆฌ์คํธ์ ์ฎ๊ฒจ๋ด์ผ๋ฉด์ ๊ดํธ๊ฐ ์์ฑ๋ ๋ ๋ง๋ค ์กฐ๊ฑด๋ฌธ์ ํตํด์ ์ ์ ๋ถ์ฌ ๋ฐ ์ฐ์ฐ์ ์ค์ํ๋ฉด๋๋ค.
3๋ฒ์งธ iteration ์ ๊ฒฝ์ฐ, ์๊ดํธ๊ฐ ์์ฑ๋ ์์ ์ด๋ค. ์์ฑ๋ ์๊ดํธ ์ฌ์ด์ ์ ์๊ฐ ์์ผ๋ฏ๋ก 2 ๋ฅผ ์คํ์ ์ฝ์ ํ๊ณ ๋ค์ ๋ฐ๋ณต์ผ๋ก ๋์ด๊ฐ๋ค.
6, 7๋ฒ์งธ iteration ์ ๊ฒฝ์ฐ, ๋๊ดํธ๊ฐ ์์ฑ๋ ์์ ์ด๋ค.
6๋ฒ์งธ ๋ฐ๋ณต์ ๊ฒฝ์ฐ ์์ฑ๋ ๋๊ดํธ ์ฌ์ด์ ์ ์๊ฐ ์์ผ๋ฏ๋ก 3 ๋ฅผ ์คํ์ ์ฝ์
ํ๋ค.
7๋ฒ์งธ ๋ฐ๋ณต์ ๊ฒฝ์ฐ ํ์ฌ ์คํ์ ['(', 2, '[', 3]
์ด๋ค.
๋๋ฌธ์ t ๋ 3 ์ด ๋๊ณ 9 ๊ฐ ์คํ์ ์ฝ์
๋๋ค.
์์ ๊ฐ์ ๋ชจ๋ ์ฐ์ฐ์ ๋ง์น๋ฉด [22, 6]
์ด๋ผ๋ ๋ฆฌ์คํธ๊ฐ ์์ฑ๋๊ณ , ๋ฆฌ์คํธ์ sum ์ ๊ตฌํด์ฃผ๋ฉด ์ ๋ต์ด๋ค.
ํ์ง๋ง ์ง์ ์ด๋ฃจ์ง ๋ชปํ ๊ดํธ๋ค์ด ๋จ์์์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด ์กฐ๊ฑด๋ฌธ์ ํตํด ๊ตฌ๋ณํด์ฃผ๋ฉด๋๋ค.
์์ค์ฝ๋
import sys
input = sys.stdin.readline
s = input().rstrip()
stack = []
ans = 0
for i in s:
if i == ")":
t = 0
while len(stack) != 0:
top = stack.pop()
if top == "(":
if t == 0:
stack.append(2)
else:
stack.append(2*t)
break
elif top == "[":
print(0)
exit(0)
else:
t += top
elif i == "]":
t = 0
while len(stack) != 0:
top = stack.pop()
if top == "[":
if t == 0:
stack.append(3)
else:
stack.append(3*t)
break
elif top == "(":
print(0)
exit(0)
else:
t += top
else:
stack.append(i)
for i in stack:
if i == "(" or i == "[":
print(0)
exit(0)
else:
ans += i
print(ans)