File tree Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution :
2+ def climbStairs (self , n : int ) -> int :
3+ if n <= 2 :
4+ return n
5+
6+ prev2 , prev1 = 1 , 2
7+
8+ for i in range (3 , n + 1 ):
9+ current = prev1 + prev2
10+ prev2 = prev1
11+ prev1 = current
12+
13+ return prev1
14+
15+ """
16+ ================================================================================
17+ 풀이 과정 - 08:49 시작 ~ 08:54 종료 (5분 소요)
18+ ================================================================================
19+
20+ 1. 계단 올라갈건데, n step씩 올라감
21+ 2. 1 또는 2단계씩 갈 수 있는데, 얼마나 많이 탑까지 올라갈 수 있는 방법이 있을까?
22+ 3. 재귀로 내가 1 또는 2로 갈 수 있는 방법을 모두 구해야할 것 같은데?
23+ 4. n - 1, n - 2
24+ 5. 3번째 계단부터 첫 번째 계단 갈 수 있는 방법 + 두 번째 계단 갈 수 있는 방법
25+ 6. DP로 풀어야할 것 같은데?
26+ 7. 이거 계단 경우의 수 보니까 피보나치 수열이네?
27+
28+
29+ [1차 시도] 딕셔너리를 사용한 DP
30+ ────────────────────────────────────────────────────────────────────────────────
31+ 7. 피보나치 수열과 유사한 패턴 발견
32+ 8. dp[i] = dp[i-1] + dp[i-2] 점화식 도출
33+ 9. 기저 사례: dp[1] = 1, dp[2] = 2
34+
35+ dp = { 1: 1, 2: 2}
36+ for i in range(3, n + 1):
37+ dp[i] = dp[i-1] + dp[i-2]
38+
39+ return dp[n]
40+
41+ 10. 정상적으로 통과되는 것 확인 완료
42+
43+
44+ [2차 개선] 공간 복잡도 최적화
45+ ────────────────────────────────────────────────────────────────────────────────
46+ 11. 잘 생각해보면 공간 복잡도를 아예 딕셔너리를 안만들고 푸는 방법도 있을듯?
47+ 13. 변수 2개(prev2, prev1)로 공간 복잡도를 O(1)로 개선
48+
49+ if n <= 2:
50+ return n
51+
52+ prev2, prev1 = 1, 2
53+
54+ for i in range(3, n + 1):
55+ current = prev1 + prev2
56+ prev2 = prev1
57+ prev1 = current
58+
59+ return prev1
60+
61+ 14. 공간 복잡도 O(n) → O(1)로 개선 완료
62+ 15. 최종 통과 확인 완료
63+ """
You can’t perform that action at this time.
0 commit comments