😎풀이

  1. n: cost의 길이
  2. dp: dp 배열 생성
  3. 첫째, 혹은 둘째 칸부터 시작이 가능하므로 사전 설정
  4. 세번째 칸부터 n 만큼 순회
    4-1. 전전 칸에서 점프, 혹은 이전 칸에서 점프 두 경우의 수 중 최솟값으로 현재 cost와 합하여 저장
  5. 마지막 계단, 혹은 마지막 바로 이전계단 중 최솟 값 반환
function minCostClimbingStairs(cost: number[]): number {
    const n = cost.length
    const dp = Array(n).fill(Infinity)
    dp[0] = cost[0]
    dp[1] = cost[1]
    for(let i = 2; i < cost.length; i++) {
        dp[i] = cost[i] + Math.min(dp[i - 2], dp[i - 1])
    }
    return Math.min(dp[n - 2], dp[n - 1])
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글