# k733. 3. 磁軌移動序列 ## 題目連結: [k733](https://zerojudge.tw/ShowProblem?problemid=k733) ## 解題想法 * 把有L的都拆開 * 全部都改成只有T * 判斷每次移動的量 ## 看完老師[解題文章](https://hackmd.io/@oateacher/HJHKmvgDh#P3-%E7%A3%81%E8%BB%8C%E7%A7%BB%E5%8B%95%E5%BA%8F%E5%88%97)的心得 老師使用了一個while迴圈,還有一個index值來判斷目前處理的地方,如果遇到T就計算,如果遇到L就呼叫自己進一個function然後遞迴。這個方法我原本沒有想到,把遞迴跟while寫在一起了。 ## 程式碼 ```python= data = input() #把資料用大寫拆成陣列 grid = [] s = 0 for i in range(1,len(data)): if data[i].isupper(): grid.append(data[s:i]) s = i grid.append(data[s:]) #把L拆開存到新陣列 storage = [] times = [] newgrid = [] for i in range(len(grid)): if grid[i].startswith("T"): if storage == []: newgrid.append(grid[i]) else: storage[-1].append(grid[i]) elif grid[i].startswith("L"): storage.append([]) times.append(int(grid[i][1])) else: for i in range(times.pop()): for j in storage[-1]: if len(storage) == 1: newgrid.append(j) else: storage[-2].append(j) storage.pop() #start total = 0 now = 10 for i in range(len(newgrid)): new = int(newgrid[i][1:]) total += abs(new - now) now = new print(total)