[LeetCode] Min Cost Climbing Stairs

아르당·2026년 2월 21일

LeetCode

목록 보기
164/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

정수 배열 cost가 주어지고, cost[i]는 계단의 i번째 계단을 오르는 데 드는 비용이다. 비용을 지불하면 한 계단 또는 두 계단을 오를 수 있다.
인덱스 0번 단계부터 시작하거나 인덱스 1번 단계부터 시작할 수 있다.
최상층에 도달하는 데 드는 최소 비용을 반환해라.

Example

#1
Input: cost = [10, 15, 20]
Output: 15
Explanation: 인덱스 1에서 시작한다.
15를 지불하고 두 계단을 오르면 정상이다.
총 비용은 15이다.

#2
Input: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
Output: 6
Explanation: 인덱스 0에서 시작한다.

  • 1을 지불하고 두 계단을 오르면 인덱스 2에 도착한다.
  • 1을 지불하고 두 계단을 오르면 인덱스 4에 도착한다.
  • 1을 지불하고 두 계단을 오르면 인덱스 6에 도착한다.
  • 1을 지불하고 한 계단을 오르면 인덱스 7에 도착한다.
  • 1을 지불하고 두 계단을 오르면 인덱스 9에 도착한다.
  • 1을 지불하고 한 계단을 오르면 정상에 도착한다.

총 비용은 6이다.

Constraints

  • 2 <= cost.length <= 1000
  • 0 <= cost[i] <= 999

Solved

class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int n = cost.length;
        int[] dp = new int[n];

        dp[0] = cost[0];
        dp[1] = cost[1];

        for(int i = 2; i < n; i++){
            dp[i] = cost[i] + Math.min(dp[i - 1], dp[i - 2]);
        }

        return Math.min(dp[n - 1], dp[n - 2]);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글