Programming/LeetCode

[Dart] 746. Min Cost Climbing Stairs

Meezzi 2025. 4. 22. 10:53
728x90

1. 문제

https://leetcode.com/problems/min-cost-climbing-stairs/description/?envType=study-plan-v2&envId=leetcode-75

 

 

 

2. 요구사항

1) 계단을 오르는 데 드는 비용이 cost로 표현된 정수 배열이 주어진다.

2) 비용을 지불하면 계단을 한 칸 또는 두 칸 오를 수 있다.

3) 계단의 꼭대기에 도달하기 위한 최소 비용을 반환한다.

 

 

 

3. 코드

class Solution {
  int minCostClimbingStairs(List<int> cost) {

    int n = cost.length; // 계단 수

    // 초기값 설정
    // prev2: i-2번째 계단까지의 최소 비용
    // prev1: i-1번째 계단까지의 최소 비용
    int prev1 = cost[1];
    int prev2 = cost[0];

    // i번째 계단부터 마지막 계단까지 반복
    for (int i = 2; i < n; i++) {
      // 현재 i번째 계단까지의 최소 비용 계산
      int curr = cost[i] + (prev1 < prev2 ? prev1 : prev2);

      // 다음 반복을 위해 이전 값 업데이트
      prev2 = prev1;
      prev1 = curr;
    }

    // 마지막 계단을 밟지 않아도 되므로
    // 마지막 두 계단 중 더 적은 비용으로 도달한 경우를 선택
    return prev1 < prev2 ? prev1 : prev2;
  }
}

 

728x90