문제 링크 : https://leetcode.com/problems/min-cost-climbing-stairs/
계단 하나를 오를때 비용이 발생하고, 한번에 하나 혹은 두개의 계단을 오를 수 있다.
[10, 15, 20] 이면 15만 지불하고 모든 계단을 다 오를 수 있는 것인데 가장 최소의 비용을 지불하고 계단을 전부 오르려면 어떻게 해야하는가?
메모리 사용을 최소화하는(아마도..?) 방법중에
[10,15,20]에 0을 추가한다고 가정하고 15부터 시작한다고 하면( [10,15,20,0])
(15+20) 또는 (15+0)을 선택할 수 있다
이중에 가장 최소값은 15(15+0)이기 때문에 이를 반환하면 풀 수 있는 문제이다..
class Solution:
def minCostClimbingStairs(self, cost: List[int]) -> int:
cost.append(0)
for i in range(len(cost)-3,-1,-1):
cost[i] += min(cost[i+1], cost[i+2])
return min(cost[0], cost[1])
22.10.04
복습