https://leetcode.com/problems/min-cost-climbing-stairs/
You are given an integer array cost where cost[i] is the cost of ith step on a staircase. Once you pay the cost, you can either climb one or two steps.
You can either start from the step with index 0, or the step with index 1.
Return the minimum cost to reach the top of the floor.
Example 1:
Input: cost = [10,15,20] Output: 15 Explanation: Cheapest is: start on cost[1], pay that cost, and go to the top.
Example 2:
Input: cost = [1,100,1,1,1,100,1,1,100,1] Output: 6 Explanation: Cheapest is: start on cost[0], and only step on 1s, skipping cost[3].
Constraints:
- 2 <= cost.length <= 1000
- 0 <= cost[i] <= 999
class Solution {
public int minCostClimbingStairs(int[] cost) {
int N = cost.length;
for (int i = 2; i < N; i++){
cost[i] = Math.min(cost[i-2], cost[i-1]) + cost[i];
}
return Math.min(cost[N-1], cost[N-2]);
}
}
1. 어려웠던 점:
- 이전에 백준에서 풀어봤던 계단수 문제와 유사해서 접근하기 쉬웠다.
2. 알게된 점:
- DP 복습
3. 알고리즘 풀이:
두 칸 아래와 한 칸 아래 계단 중 더 값이 작은 계단을 밟으면 된다.
인덱스 0, 1 은 당연히 자신의 계단만 밟는 것이다.
'알고리즘 문제풀이 > LeetCode' 카테고리의 다른 글
[LeetCode 17] Letter Combinations of a Phone Number with JAVA (0) | 2021.05.27 |
---|---|
[LeetCode 22] Generate Parentheses with Java (0) | 2021.05.26 |
[LeetCode 91] Decode Ways with JAVA (0) | 2021.05.12 |
[LeetCode 53] Maximum Subarray with JAVA (0) | 2021.05.11 |
[LeetCode 55] Jump Game with JAVA (0) | 2021.05.08 |