Programming/LeetCode
[Dart] 746. Min Cost Climbing Stairs
Meezzi
2025. 4. 22. 10:53
728x90
1. 문제
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