[파이썬] 백준 1662번 압축

작성:

백준 #1662 압축


# 체크할 조건
# K는 '한 자리' 정수
# Q는 '0자리' 이상의 문자열

# 출력: 압축되지 않은 문자열의 길이

# 1(9) == 9
# 71(9) == 79 => 7979
# 33(567979)
# 3 567979 567979 567979

# 스택을 사용해서 괄호 안에 있는 문자열을 더하여 반환한다.
# 함수 (문자열, 탐색할위치, 괄호 바로앞 숫자) -> 문자열 길이, 탐색한 길이

def cal(string, s, num):
    leng = 0
    while s < len(string):
        if string[s] == '(':
            leng -= 1
            calculated, s = cal(string, s+1, int(string[s-1]))
            leng += calculated
        elif string[s] == ')':
            return leng * num, s
        else:
            leng += 1
        s += 1
    return leng * num, s

def solution(string):
    print(cal(string, 0, 1)[0])

if __name__ == '__main__':
    solution(input())

댓글남기기