본문 바로가기

알고리즘 문제풀이/LeetCode

[LeetCode 746] Min Cost Climbing Stairs with Java

https://leetcode.com/problems/min-cost-climbing-stairs/

 

Min Cost Climbing Stairs - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

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 은 당연히 자신의 계단만 밟는 것이다.