題解
就是…一直遞迴。建議直接看答案
Python 解答
s = input()
stack = [1] # 存放各層第一個編號,該層總和,最後一個編號
idx = 0 # 當前index
while idx < len(s) :
if s[idx] == "L" :
stack.append(int(s[idx+1])) # 紀錄迴圈次數
idx += 2 # 更新index
elif s[idx] == "T" :
now = int(s[idx+1:idx+3]) # 當前編號
idx += 3 # 更新index
if isinstance(stack[-1],int) : # 第一個數值
stack.append([now,0,now]) # 新增數值
else :
first, sums, end = stack[-1]
sums += abs(now-end)
stack[-1] = [first,sums,now] # 計算距離
else: # elif s[idx] == "E" :
idx += 1 # 更新index
first, sums, end = stack.pop() # 提出數值
times = stack.pop() # 提出迴圈次數
# 計算總和
sums = sums*times + abs(first-end)*(times-1)
if isinstance(stack[-1],int) : # 第一個數值
stack.append([first,sums,end]) # 新增數值
else :
# 計算距離
stack[-1][1] += sums + abs(first-stack[-1][2])
stack[-1][2] = end
print(stack[-1][1])