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)'알고리즘 > 백준' 카테고리의 다른 글
| 백준 - 1600 말이되고픈 원숭이 (Java) (0) | 2021.06.10 |
|---|---|
| 백준 21610 - (Java, python) 마법사 상어와 비바라기 (0) | 2021.06.03 |
| 백준 15810 - 풍선 공장 (0) | 2021.05.18 |
| 백준 2910 - (python)빈도 정렬 (0) | 2021.05.01 |
| 백준 17609 - (python)회문 (0) | 2021.05.01 |