λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸƒ algorithm/leetcode

LeetCode 70 - Climing Stairs (Easy)

by HandHand 2021. 3. 2.

문제

LeetCode - 70번

풀이 κ³Όμ •

μ „ν˜•μ μΈ 동적 κ³„νšλ²• λ¬Έμ œμž…λ‹ˆλ‹€.

ν˜„μž¬ κ³„λ‹¨μ—μ„œ 올라갈 수 μžˆλŠ” 칸의 μˆ˜κ°€ 1~2 μ΄λ―€λ‘œ
dp(n) = n번째 κ³„λ‹¨μ—μ„œ λ§ˆμ§€λ§‰ 계단에 λ„λ‹¬ν•˜λŠ” 경우의 수 라고 μ •μ˜ν•œλ‹€λ©΄
λ‹€μŒκ³Ό 같은 점화식을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

dp(n) = dp(n-1) + dp(n-2)


μ΄λŠ” ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄κ³Ό 같은 ν˜•νƒœλ₯Ό 가지고 μžˆλŠ” 것을 μ•Œ 수 μžˆλ„€μš”.

이번 λ¬Έμ œμ—μ„œλŠ” 보톡 Javascript둜 λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ κ΅¬ν˜„ν•  λ•Œ 주둜 μ‚¬μš©ν•˜λŠ” ν΄λ‘œμ € νŒ¨ν„΄μ΄ μ•„λ‹ˆλΌ
λ‹€λ₯Έ μ–Έμ–΄μ—μ„œ μ‚¬μš©ν•˜λŠ” μ „μ—­ μŠ€μ½”ν”„ λ³€μˆ˜λ₯Ό 미리 ν• λ‹Ήλ°›μ•„ μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

이후 λ¬Έμ œλΆ€ν„°λŠ” Javascript 에 μ΅μˆ™ν•΄μ§€κΈ° μœ„ν•΄ λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ κ΅¬ν˜„ν•  λ•Œ ν΄λ‘œμ €λ₯Ό ν™œμš©ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.

μ½”λ“œ

/**
 * @param {number} n
 * @return {number}
 */
let memo = new Array(46).fill(-1);

var climbStairs = function (n) {
  if (n === 0) {
    return 1;
  } else if (n < 0) {
    return 0;
  }

  if (memo[n] !== -1) {
    return memo[n];
  }

  memo[n] = climbStairs(n - 1) + climbStairs(n - 2);
  return memo[n];
};
λ°˜μ‘ν˜•

'πŸƒ algorithm > leetcode' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

LeetCode 49 - Group Anagrams (Medium)  (0) 2021.03.02
LeetCode 200 - Number of Islands (Medium)  (0) 2021.03.02
LeetCode 64 - Minimum Path Sum (Medium)  (0) 2021.03.02
LeetCode 55 - Jump Game (Medium)  (0) 2021.03.02
LeetCode 1 - Two Sum (Easy)  (0) 2021.03.02

πŸ’¬ λŒ“κΈ€