๋ฐฑ์ค 1662 ์์ถ ํ์ด์ฌ
2023. 3. 1. 23:07ใ๐ฑ Algorithm/Else
๋ด๊ฐ ์ง ์ฝ๋ (๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ)
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)
'๐ฑ Algorithm > Else' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 2470 ๋ ์ฉ์ก ํ์ด์ฌ (0) | 2023.01.29 |
---|---|
๋ฐฑ์ค 1527 ๊ธ๋ฏผ์์ ๊ฐ์ ํ์ด์ฌ (0) | 2022.12.30 |
๋ฐฑ์ค 1895 ํํฐ ํ์ด์ฌ (1) | 2022.12.21 |
๋ฐฑ์ค ์์ด 2559๋ฒ ํ์ด์ฌ (0) | 2022.07.12 |
๋ฐฑ์ค 2346 ํ์ ํฐ๋จ๋ฆฌ๊ธฐ ํ์ด์ฌ (0) | 2022.07.04 |