개발/코딩테스트
LeetCode - 746. Min Cost Climbing Stairs
Alan1220
2023. 8. 25. 13:56
문제: 746. Min Cost Climbing Stairs (Easy)
1. 계단의 비용을 나타내는 cost 배열이 제공됨.
2. 해당 비용을 내고 한 계단 또는 두 계단을 오를 수 있음.
3. 인덱스가 0이거나 1부터 시작할 수 있고, 꼭대기에 도달하기 위한 최소 비용을 리턴.
Example 1:
Input: cost = [10,15,20] Output: 15 Explanation: You will start at index 1. - Pay 15 and climb two steps to reach the top. The total cost is 15.
예시:
Example 1:
Input: cost = [10,15,20]
Output: 15
Explanation: 인덱스 1에서 시작하여 2계단을 한번에 오른 값인 15가 최소 비용.
풀이:
class Solution {
public int minCostClimbingStairs(int[] cost) {
for (int i = 2; i < cost.length; i++) {
cost[i] = Math.min(cost[i - 2], cost[i - 1]) + cost[i];
}
return Math.min(cost[cost.length - 1], cost[cost.length - 2]);
}
}
설명:
1. 3번째 인덱스부터 시작하여 두번째 전 비용과 바로 전 비용 중 최소값과 현재 계단의 비용을 합하여 누적.
2. 전부 누적 후 꼭대기 값을 계산하기 위해 두번째 전 비용과 바로 전 비용 중 최소값을 리턴.
시간복잡도: O(n)
공간복잡도: O(1)
Runtime: 0ms Beats 100.00% of users with Java
Memory: 42.93MB Beats 65.39% of users with Java
개인의 해답으로 풀이한 문제입니다.
절대적인 정답이 아닐 수 있으며, 더 좋은 개선 방안이 있다면 댓글로 의견 주세요.