ํ’€์ด


์ฒ˜์Œ์—” 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)

References