알고리즘/문제풀이

[LeetCode] 70. Climbing Stairs (Easy) 풀이

개발하는 까꿍이 2022. 7. 6. 09:49

❓ 문제

You are climbing a staircase. It takes n steps to reach the top.
계단을 올라가야한다. 계단 끝에 도달하기 위해 n 계단을 밟아야한다.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
한번에 1계단 또는 2계단만 올라갈 수 있다. 계단 마지막으로 올라가기 위해서 중복 없이 얼마나 많은 경우의 수가 있는가?

 

Example 1:

Input: n = 2
Output: 2

Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps

Example 2:

Input: n = 3
Output: 3

Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step

❗ 풀이

결국 못 풀어서 인터넷을 찾아보았다...

 

전형적인 DP(Dynamic Programming) 문제라고 되어있었다!
DP(Dynamic Programming)은 더 공부하여 나중에 블로그에 올리려고 한다.

간단하게 살펴보면, DP는 

/**
 * @param {number} n
 * @return {number}
 */
 var climbStairs = function(n) {
  let dp = [];
  dp[0] = 1;
  dp[1] = 1;
  
  for(let i = 2; i <= n; i++) {
      dp[i] = dp[i - 1] + dp[i - 2];
  }
  return dp[n];
};
Runtime: 68 ms
Memory Usage: 42.1 MB

🚩 Detail