Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- RxJS 함수형 프로그래밍
- React hooks 남용 사례
- React 리렌더링 최적화
- 알고리즘
- useCallback 성능 최적화
- RxJS 오퍼레이터
- DaleStudy
- React 성능 최적화 방법
- React useMemo 사용법
- 스쿼드조직
- 알고리즘스터디
- contains duplicate
- Observable vs Array
- Blind75
- 달래스터디
- RxJS 에러 처리
- RxJS 멀티캐스팅
- 자바스크립트 고차 함수 vs Observable
- 협업문화
- useMemo 성능 최적화
- React useEffect 안티패턴
- RxJS 변환 오퍼레이터
- RxJS 마블 다이어그램
- leedcode
- React useCallback 사용법
- RxJS 생성 오퍼레이터
- leetcode
- Climbing Stairs
- 개발자커뮤니케이션
- RxJS 결합 오퍼레이터
Archives
- Today
- Total
수쿵의 IT월드
DaleStudy | Leetcode Study 2주차 - Climbing Stairs 본문

문제
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
Constraints:
- 1 <= nums.length <= 10^5
- -10^9 <= nums[i] <= 10^9
풀이
이 문제는 계단을 걸을 수 있는 모든 경우의 수를 구하는 것을 목표로 하고 있다.
사실 처음 볼 때 어떻게 풀어야할지 감이 안왔는데, 다른 테스트 n=4, n=5를 직접 구해보고 나니 피보나치 수열로 구현하면 되겠다는 생각이 들었다. 문제를 보고 어떻게 풀어야할지 감이 오지 않을 때는, 테스트 코드를 여러개를 만들어 두고 직접 쓰면서 생각해보면 답이 나올 때가 있어서 주로 사용하는 방법이다.
피보나치 수열은 재귀를 이용하면 되는데, 메모이제이션을 하지 않고 구현하면 테스트를 통과하지 못하므로 테스트를 통과하기 위해서는 객체에 값을 저장해나가면서 풀면 된다.
function climbStairs(n: number): number {
type Cache = {[key: number]: number}
const cache: Cache = {
2: 2,
1: 1
}
const fibonacci = (n: number, cache: Cache) => {
if (n in cache) {
return cache[n]
} else {
cache[n] = fibonacci(n-2, cache) + fibonacci(n-1, cache)
return cache[n]
}
}
return fibonacci(n, cache);
};