[BOJ][๐ก5][๋ฐฑ์ค#01662] ์์ถ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์์ถ๋์ง ์์ ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ๋ฌธ์์ด์ค ์ด๋ค ๋ถ๋ถ ๋ฌธ์์ด์ K(Q)์ ๊ฐ์ด ์์ถ ํ ์ ์๋ค. K๋ ํ์๋ฆฌ ์ ์์ด๊ณ , Q๋ 0์๋ฆฌ ์ด์์ ๋ฌธ์์ด์ด๋ค. ์ด Q๋ผ๋ ๋ฌธ์์ด์ด K๋ฒ ๋ฐ๋ณต๋๋ค๋ ๋ป์ด๋ค. ์์ถ๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋, ์ด ๋ฌธ์์ด์ ๋ค์ ์์ถ์ ํธ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ถ๋ ๋ฌธ์์ด S๊ฐ ๋ค์ด์จ๋ค. S์ ๊ธธ์ด๋ ์ต๋ 50์ด๋ค. ๋ฌธ์์ด์ (, ), 0-9์ฌ์ด์ ์ซ์๋ก๋ง ๋ค์ด์จ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์์ถ๋์ง ์์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค. ์ด ๊ฐ์ 2,147,473,647 ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์์
์์ 1
์ ๋ ฅ
33(562(71(9)))
์ถ๋ ฅ
19
์์ 2
์ ๋ ฅ
123
์ถ๋ ฅ
3
์์ 3
์ ๋ ฅ
10342(76)
์ถ๋ ฅ
8
์์ 4
์ ๋ ฅ
0(0)
์ถ๋ ฅ
0
์์ 5
์ ๋ ฅ
1(1(1(1(1(1(1(0(1234567890))))))))
์ถ๋ ฅ
0
์์ 6
์ ๋ ฅ
1()66(5)
์ถ๋ ฅ
7
My Sol
def main():
def dfs(bi, acc):
if bi > l: return 0, 0
i = bi
ret = 0
while i < l:
if S[i] == ')': return i, ret
if S[i] == '(':
ret -= acc
ei, accv = dfs(i+1, acc*int(S[i-1]))
i = ei+1
ret += accv
else:
ret += acc
i += 1
return i, ret
S = input()
l = len(S)
ei, ret = dfs(0, 1)
return ret
print(main())
์คํ์ ์ฌ์ฉํ๋ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์๋ฐ, ์ฌ๊ท๋ฅผ ์ฌ์ฉํด์ ํ์ด๋ณด์๋ค.
- ๊ดํธ๋ ์ค๋ฅ ์์ด ์๊ดํธ ์์ ์ซ์๊ฐ ์ค๊ณ , ์ด๋ฆฐ ๊ดํธ๊ฐ ์๋ค๋ฉด ๋ฐ๋์ ๋ซํ ๊ดํธ๊ฐ ์๋ค. ์ด๋ฅผ ์ด์ฉํด dfs๋ก ์งํํ๋ค.
- 0๋ถํฐ ์์ํ๋ ์์ ์ธ๋ฑ์ค
bi
์ ๊ฐ์ค์นacc
๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ๋dfs
ํจ์๋ฅผ ๋ง๋ ๋ค. ์ด ํจ์๋ ๋ซํ ๊ดํธ๋ฅผ ๋ง์ดํ๊ฑฐ๋ ์ธ๋ฑ์ค๊ฐ ๋ฌธ์์ด์ ๋์ ๋ค๋ค๋ฅด๋ฉด ํ์ฌ๊น์ง์ ๋์ ์น์ธret
๊ณผ ์ธ๋ฑ์คi
๋ฅผ ๋ฐํํ๋ค. dfs
ํจ์ ๋ด์์๋ ๊ณ์ ์ด๋ฆฐ ๊ดํธ๋ฅผ ๋ง์ดํ ๋๋ง๋ค ๋ค์dfs
ํจ์๋ฅผ ํธ์ถํ๋๋ฐ, ๊ดํธ ์์ ์๋งํผ ๋ฐ๋ณตํ๋ค๋ ์๋ฏธ์ด๋ฏ๋ก ๊ฐ์ค์น์ ๊ดํธ ์์ ์๋ฅผ ๊ณฑํด์ ์ ๋ฌํด์ค๋ค.- ๋ด๋ถ์์ ๊ฐ์ ๋ชจ๋ ์ทจํฉํ๋ค๋ฉด ์ด๋ฅผ ์ฌ๊ทํจ์ ์ธ๋ถ๋ก ์ ๋ฌํ๊ณ , ์์์ ์ด์ ๋์ ์ธ
main
ํจ์ ๋ด์์ 0๋ฒ ์ธ๋ฑ์ค์ ๊ฐ์ค์น๋ฅผ 1๋ก ๋๋dfs
ํจ์์ ๋ฐํ๊ฐ์ ์ต์ข ์ ์ผ๋ก ๋ฐํํด ์ถ๋ ฅํ๊ฒ ํ๋ฉด ๋๊ฒ ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ