[BOJ][๐ŸŸก5][๋ฐฑ์ค€#01662] ์••์ถ•

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #1662

๋ฌธ์ œ

์••์ถ•๋˜์ง€ ์•Š์€ ๋ฌธ์ž์—ด 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())

์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์€๋ฐ, ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€์–ด๋ณด์•˜๋‹ค.

  1. ๊ด„ํ˜ธ๋Š” ์˜ค๋ฅ˜ ์—†์ด ์†Œ๊ด„ํ˜ธ ์•ž์— ์ˆซ์ž๊ฐ€ ์˜ค๊ณ , ์—ด๋ฆฐ ๊ด„ํ˜ธ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋‹ซํžŒ ๊ด„ํ˜ธ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด dfs๋กœ ์ง„ํ–‰ํ•œ๋‹ค.
  2. 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์‹œ์ž‘ ์ธ๋ฑ์Šค bi์™€ ๊ฐ€์ค‘์น˜ acc๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›๋Š” dfs ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๋‹ซํžŒ ๊ด„ํ˜ธ๋ฅผ ๋งž์ดํ•˜๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ๋ฌธ์ž์—ด์˜ ๋์— ๋‹ค๋‹ค๋ฅด๋ฉด ํ˜„์žฌ๊นŒ์ง€์˜ ๋ˆ„์ ์น˜์ธ ret๊ณผ ์ธ๋ฑ์Šค i๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  3. dfs ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” ๊ณ„์† ์—ด๋ฆฐ ๊ด„ํ˜ธ๋ฅผ ๋งž์ดํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ dfs ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, ๊ด„ํ˜ธ ์•ž์˜ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ๊ฐ€์ค‘์น˜์— ๊ด„ํ˜ธ ์•ž์˜ ์ˆ˜๋ฅผ ๊ณฑํ•ด์„œ ์ „๋‹ฌํ•ด์ค€๋‹ค.
  4. ๋‚ด๋ถ€์—์„œ ๊ฐ’์„ ๋ชจ๋‘ ์ทจํ•ฉํ–ˆ๋‹ค๋ฉด ์ด๋ฅผ ์žฌ๊ท€ํ•จ์ˆ˜ ์™ธ๋ถ€๋กœ ์ „๋‹ฌํ•˜๊ณ , ์‹œ์ž‘์ ์ด์ž ๋์ ์ธ main ํ•จ์ˆ˜ ๋‚ด์—์„œ 0๋ฒˆ ์ธ๋ฑ์Šค์— ๊ฐ€์ค‘์น˜๋ฅผ 1๋กœ ๋‘๋Š” dfs ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด ์ถœ๋ ฅํ•˜๊ฒŒ ํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ