๋ฐฑ์ค€ 1662 ์••์ถ• ํŒŒ์ด์ฌ

2023. 3. 1. 23:07ใ†๐Ÿ”ฑ Algorithm/Else

 

 

1662๋ฒˆ: ์••์ถ•

์••์ถ•๋˜์ง€ ์•Š์€ ๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ๋ฌธ์ž์—ด์ค‘ ์–ด๋–ค ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์€ K(Q)์™€ ๊ฐ™์ด ์••์ถ• ํ•  ์ˆ˜ ์žˆ๋‹ค. K๋Š” ํ•œ์ž๋ฆฌ ์ •์ˆ˜์ด๊ณ , Q๋Š” 0์ž๋ฆฌ ์ด์ƒ์˜ ๋ฌธ์ž์—ด์ด๋‹ค. ์ด Q๋ผ๋Š” ๋ฌธ์ž์—ด์ด K๋ฒˆ ๋ฐ˜๋ณต๋œ๋‹ค๋Š” ๋œป์ด

www.acmicpc.net

 

๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ (๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ)

string = list(input())
input_stack = []
output_stack = []
for s in string:
    if s == ")":
        iter_num = -1
        while 1:
            input_top = input_stack.pop()
            if input_top != "(":
                output_stack.append(input_top)
            else:
                iter_num = input_stack.pop()
                break
        input_stack.append(int(iter_num) * (''.join(output_stack)))
        output_stack = []
    else:
        input_stack.append(s)

answer = ''.join(input_stack)
print(len(answer))

 

 

๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•

์ž…๋ ฅ๊ฐ’์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์–ด๋–ค ์›์†Œ๋ƒ์— ๋”ฐ๋ผ ๋กœ์ง ๋ถ„๊ธฐ. 

 

๋‹ซ๋Š” ๊ด„ํ˜ธ " ) " ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ ๋งˆ๋‹ค ์ •๋‹ต์ด ๋  ๊ธธ์ด(length) ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค. 

else ๊ตฌ๋ฌธ์—์„œ multi ๋Š” ๊ด„ํ˜ธ ๋‚ด๋ถ€์˜ ์ˆซ์ž๊ฐ€ ๋ฐ˜๋ณต๋œ ํšŸ์ˆ˜๋กœ, ์ฆ‰ ์—ฌ๋Š” ๊ด„ํ˜ธ ' ( ' ๋ฐ”๋กœ ์•ž์˜ ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ด ๊ฐ’์€ input_stack ์— length - 1 ๊ฐ’๊ณผ ํ•จ๊ป˜ ์ €์žฅ๋˜๋Š”๋ฐ, stack ์˜ LIFO ํŠน์ง•์— ๋”ฐ๋ผ ๊ฐ€์žฅ depth ๊ฐ€ ๊นŠ์€ ๊ฐ’์ด ๋จผ์ € pop ๋œ๋‹ค.

else ๊ตฌ๋ฌธ์˜ pre_left ๋Š” ๊ด„ํ˜ธ ' ( ' ์•ž ์ชฝ์˜ ์ˆซ์ž์˜ ๊ธธ์ด๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์—ฌ๋Š” ๊ด„ํ˜ธ ๋ฐ”๋กœ ์ง์ „์˜ ์ˆซ์ž๋Š” ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์ œ์™ธํ•˜์—ฌ(-1) elif ๊ตฌ๋ฌธ์—์„œ ์ €์žฅํ•œ๋‹ค.

string = list(input())
input_stack = []
length = 0
iter_num = 0
for s in string:
    if s.isdigit():
        length += 1
        iter_num = s
    elif s == "(":
        input_stack.append([int(iter_num), length - 1])
        length = 0
    else:
        multi, pre_left = input_stack.pop()
        length = ((multi * length) + pre_left)
print(length)