<๋ฌธ์ ๋งํฌ>
https://www.acmicpc.net/problem/1662
1662๋ฒ: ์์ถ
์์ถ๋์ง ์์ ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ๋ฌธ์์ด์ค ์ด๋ค ๋ถ๋ถ ๋ฌธ์์ด์ K(Q)์ ๊ฐ์ด ์์ถ ํ ์ ์๋ค. K๋ ํ์๋ฆฌ ์ ์์ด๊ณ , Q๋ 0์๋ฆฌ ์ด์์ ๋ฌธ์์ด์ด๋ค. ์ด Q๋ผ๋ ๋ฌธ์์ด์ด K๋ฒ ๋ฐ๋ณต๋๋ค๋ ๋ป์ด
www.acmicpc.net
<ํ์ด ์ ๋ต>
1. ์คํ์ ํ์ฉํ ๋ฌธ์์ด ๋ฌธ์ ์ด๋ค.
2. ๋ฌธ์ ๋ฅผ ๋ณด๋ฉด ๊ฐ์ฅ ๋จผ์ ๋ ์ฌ๋ฆฌ๊ธฐ ์ฌ์ด ํ์ด๋ ์ค์ ๋ก ๋ฌธ์์ด์ ์์ถํด์ ํด์ ๊ฒฐ๊ณผ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๊ฑด๋ฐ, ๊ทธ๋ ๊ฒ ํ ๊ฒฝ์ฐ ๋ฌธ์์ด์ ์ต๋ ๊ธธ์ด๊ฐ 2,147,473,647์ธ์ง๋ผ ๋น์ฐํ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
3. ํต์ฌ์ ๋ฌธ์์ด ์ ์ฒด๋ฅผ ๊ตฌํ๋ ๊ฒ ์๋๋ผ '๊ธธ์ด'๋ฅผ ๊ตฌํ๋ ๊ฒ์ด๋ฏ๋ก ๊ดํธ ์์ ์์นํ ๋ฐ๋ณต ํ์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์๋ง ์ซ์ ๊ทธ๋๋ก ์ ์ฅํ๊ณ , ๋๋จธ์ง ์์ถ ํด์ ๋์์ธ ๋ฌธ์๋ค์ ๊ธธ์ด๋ฅผ ๋ํ๋ด๋ 1๋ก ์ ์ฅํด์ ๋ฌธ์์ด์ ๊ธธ์ด๋ง ๊ณ์ฐํด๋๊ฐ๋ ๊ฒ์ด๋ค.
4. ํ๊ณ ๋์ ์๊ฐํด๋ณด๋ ๋ฌธ์ ์์ ์ฃผ์ด์ง ์กฐ๊ฑด ๋ฒ์๋ก ๋ณด์ ์ค์ ๋ก ๋ฌธ์์ด์ ์์ถ ํด์ ํด์ ํ์ดํ๋ฉด ๋น์ฐํ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋ ์๋ฐ์ ์๋ ๋ฌธ์ ์๋ค. ๋ฌธ์ ๋ฅผ ํ ๋๋ ํญ์ ์กฐ๊ฑด์ ๊ผผ๊ผผํ ์ฝ๊ณ ์ถฉ๋ถํ ์๊ฐ์ ํ๊ณ ๋ฌธ์ ๋ฅผ ํ์ด์ผํ๋ค๋ ๊ฒ์ ๋๋ผ๊ฒ ํด์ฃผ๋ ์ข์ ๋ฌธ์ ์๋ค
<์ ๋ต ์ฝ๋>
# 220917 1662 ์์ถ
# ์ ๋ต์ฝ๋
# string: ์์ถ๋์ง ์์ ๋ฌธ์์ด
string = input()
# stack: ์คํ
stack = []
for i in range(len(string)):
# ์ฌ๋ ๊ดํธ์ผ ๊ฒฝ์ฐ ์คํ์ ๋ฃ์ด์ค๋ค.
if string[i] == '(':
stack.append(string[i])
# ๋ซ๋ ๊ดํธ์ผ ๊ฒฝ์ฐ
elif string[i] == ')':
# ์์ถ์ ํ ๋ฌธ์์ด์ ๊ธธ์ด
length = 0
while True:
# ์์ถ์ ํ ๋ฌธ์๋ฅผ ์คํ์์ ๊บผ๋ด์ค๋ค.
char = stack.pop()
# ์ฌ๋ ๊ดํธ๊ฐ ๋์ฌ ๋๊น์ง ์คํ์์ ๊บผ๋ด์ฃผ๊ธฐ
if char == '(':
break
# ์์ถ์ ํ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ํด์ค๋ค.
length += char
# ์คํ์ ์์ถ์ ํผ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ค์ ๋ฃ์ด์ค๋ค.
stack.append(stack.pop() * length)
# ์ซ์์ผ ๊ฒฝ์ฐ
else:
# ๊ดํธ ์์ ์ค๋ ์ซ์์ผ ๊ฒฝ์ฐ(๋ฐ๋ณต ํ์) ์ ์ํ์ผ๋ก ๋ฐ๊ฟ์ค์ ์คํ์ ๋ฃ๋๋ค.
if i < len(string) - 1 and string[i + 1] == '(':
stack.append(int(string[i]))
# ๊ทธ ์ธ(์์ถ ํด์ ๋์)์ผ ๊ฒฝ์ฐ ๊ธธ์ด๋ฅผ ๋ํ๋ด๋ 1์ ์คํ์ ๋ฃ์ด์ค๋ค.
else:
stack.append(1)
# ๋ฌธ์์ด์ ๊ธธ์ด ์ถ๋ ฅ
print(sum(stack))
'โญ Problem_Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 17142 ์ฐ๊ตฌ์ 3 (Python/ํ์ด์ฌ) (1) | 2022.10.07 |
---|---|
[๋ฐฑ์ค] 1766 ๋ฌธ์ ์ง (Python/ํ์ด์ฌ) (0) | 2022.10.06 |
[๋ฐฑ์ค] 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋ (Python/ํ์ด์ฌ) (0) | 2022.10.04 |
[๋ฐฑ์ค] 2437 ์ ์ธ (Python/ํ์ด์ฌ) (1) | 2022.10.03 |
[๋ฐฑ์ค] 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ (Python/ํ์ด์ฌ) (0) | 2022.10.03 |
๋๊ธ