You are climbing a staircase. It takes n steps to reach the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
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
파보나치 수열
파보나치의 수열을 생각하고 계단값을 10이라고 가정할 때 -> 우리는 8까지의 값 그리고 9까지의 값을 구한 다음 더해야 한다. 즉n[i] = n[i-1] + n[i-2]
으로 적을 수 있다!
class Solution:
def climbStairs(self, n: int) -> int:
"""
:type n: int
:rtype: int
"""
if n <= 2 and n >= 0:
return n
arr = [1,2]
for i in range(2, n):
arr.append(arr[i-1] + arr[i-2])
return arr[n-1]
자 이제 그럼 해당 풀이를 자바스크립트로..
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 2 and n >= 0:
return n
f = 1
s = 2
c = 0
for _ in range(2, n):
c = f + s
f, s = s, c
return c
var climbStairs = function(n) {
if(n >= 0 && n < 3) {
return n
}
let arr = [1,2]
for(let i=2; i < n; i++){
arr[i] = arr[i-1]+arr[i-2]
}
return arr[n-1]
}
자바스크립트 진짜 묘하다..!