[Python] BOJ 1662번. 압축

1662번. 압축

문제 링크

풀이 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1662번. 압축


s = input()
stack = []
b = [0 for i in range(len(s))]

for i in range(len(s)):  # 전처리
    if s[i] == '(':
        stack.append(i)
    elif s[i] == ')':
        b[stack.pop()] = i


def recur(left, right):
    result = 0
    while left < right:
        if s[left].isdigit():  # 괄호 안 숫자
            result += 1
            left += 1
        else:
            result -= 1  # K를 빼줌
            result += int(s[left-1]) * recur(left+1, b[left])
            left = b[left] + 1
    return result


print(recur(0, len(s)))

비고