[leetcode]70. Climbing Stairs

자몽·2025년 7월 10일

자료구조-알고리즘

목록 보기
9/22

https://leetcode.com/problems/climbing-stairs/

/**
 * @param {number} n
 * @return {number}
 */
var climbStairs = function(n) { 
    let count = 0;
    function recursive(total,current){
        if(total + current > n) return
        else if(total + current == n) {
            count +=1;
            return 
        }
        else{
           recursive(total+current,1)
           recursive(total+current,2)
        }
    }
    recursive(0,0)
    return count
};

단순 재귀 호출
공간복잡도 O(1)
시간복잡도 2^n

var climbStairs = function(n) { 
    let count = 0;
    const dp = Array(n).fill(0);
    dp[1] = 1;
    dp[2] = 2;

    for(i=3;i<n+1;i++){
        dp[i] = dp[i-1]+dp[i-2]
    }
    
    return dp[n]
};

dp 활용
공간복잡도 O(n)
시간복잡도 O(n)

/**
 * @param {number} n
 * @return {number}
 */
var climbStairs = function(n) { 
    if (n < 3) return n
    let prev = 1;
    let current = 2;
    for(i=3;i<n+1;i++){
        let tempPrev = prev;
        prev = current;
        current = tempPrev + current
    }
    
    return current
};

슬라이딩 윈도우 기법
공간복잡도 O(1)
시간복잡도 O(n)

참고자료
https://kimstack.tistory.com/16
https://www.algodale.com/problems/climbing-stairs/

profile
자몽의 벨로그에 오신것을 환영합니다. 티스토리 블로그(https://jamongjjang.tistory.com/)

0개의 댓글