일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 리액트네이티브 엔진
- Google 애널리틱스
- 연결 요소 제거하기
- jest
- 테이블 해시 함수
- Hermes Engine
- 구름톤챌린지
- Jest uuid syntax
- JavaScript
- 자바스크립트
- 리액트네이티브
- 최솟갑 구하기
- 통신망분석
- 귤 고르기
- mutationobserver
- 중첩 점
- 구름톤
- 헤르메스 엔진
- mock date
- 테스트 Date
- 과제 진행하기
- nextjs
- 날짜 테스트
- create-next-app
- Leetcode #javascript #알고리즘 #Algorithms #js
- nextjs-performance
- 프로그래머스
- 구름톤 챌린지
- ResizeObserver
- 호텔 대실
- Today
- Total
나만보는개발공부블로그
Climbing Stair 본문
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
계단오르기문제(DP)
계단을 오르는 방법으로는 1칸 또는 2칸을 오를수 있는데 N의 파라미터는 총 계단수이면 반환으로 N의 계단을 오르기 위한 방법들의 수를 반환하는 식을 작성하라.
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function(n) {
let dp = new Array(n + 1);
dp[0] = 1, dp[1] = 1;
for (let i = 2; i <= n; ++i){
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
};
문제 설명
- 계단수가 1인 경우에 방법은 1 로 1가지
- 계단수가 2인 경우에 방법은 1+1 , 2 로 2가지
- 계단수가 3인 경우에 방법은 1+1+1, 2+1, 1+2로 3가지
- 계단수가 4인 경우에 방법은 1+1+1+1. 2+2. 1+2+1, 2+1+1, 1+1+2 로 5가지가 된다.
계속 계단수가 늘어날수록 식이 보이게 되는데 계단수 N = 계단수 N-1 + 계단수 N-2 가 되는걸 확인할 수 있었다.
그래서 DP(N) = DP(N-1) + DP(N-2)가 되는데 이 식을 함수안에 작성하여 문제를 풀어주면 된다.
'Algorithms > leetcode' 카테고리의 다른 글
Implement strStr() (0) | 2021.02.17 |
---|---|
merge-two-sorted-lists (0) | 2021.02.11 |
Longest Common Prefix (0) | 2021.02.09 |
[Array] Plus One (0) | 2021.02.09 |
(String) Length of Last Word (0) | 2021.02.08 |