반응형
https://www.acmicpc.net/problem/1662
import collections
s = collections.deque([x for x in input()])
def recursion(s):
if len(s) == 1:
return 1
temp = 0
while s:
cur = s.popleft()
if not s:
temp += 1
break
if cur.isnumeric() and s[0] != '(':
temp += 1
elif cur.isnumeric() and s[0] == '(':
stack = []
stack.append(s.popleft())
part =collections.deque()
while True:
popped = s.popleft()
if popped.isnumeric():
part.append(popped)
elif popped == '(':
stack.append(popped)
part.append(popped)
elif popped == ')':
stack.pop()
if not stack:
break
else:
part.append(popped)
a = recursion(part)
temp += (a*int(cur))
return temp
result = recursion(s)
print(result)
깔끔한 풀이는 아닌 듯하다.
재귀 접근 시 계속 멈칫하게 되는데 어떤 파라미터를 재귀함수에 넘겨줄 것인지,
반복되는 틀이 무엇인지를 잡으면
그래도 진행이 좀 되는 것 같다.
댓글