백준 - 1662 압축
알고리즘/백준

백준 - 1662 압축

https://www.acmicpc.net/problem/1662

 

1662번: 압축

압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이

www.acmicpc.net

1. 유형

스택, 재귀

 

2. 풀이

1) 입력 문자열을 각각 문자로 파싱

2) 맨 끝에서 부터 pop을 하며 (, ), 숫자 경우에 따라 조건을 대입

3) 재귀를 활용

 

3. 코드

def rec(tmp, stack):
    while stack:
        top = stack.pop()
        if top == ')':
            tmp += rec(0, stack)
        elif top == '(':
            r = int(stack.pop())
            tmp = tmp * r
            return tmp
        else:
            tmp += 1
    return tmp

str = input()
stack = list(str)
answer = rec(0, stack)
print(answer)