일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- docker container
- 백준 온라인 저지
- docker image
- hackerrank
- 그리디
- BOT
- data_engineer
- 2023년 목표
- 알고리즘
- datacamp
- Spark
- dsf
- Pseudo Lab
- 백준온라인저지
- Dynamic Programming
- Airflow
- 데이터 엔지니어
- SQL
- 프로그래머스
- airflow architecture
- delete join
- docker
- MySQL
- 빅데이터를 지탱하는 기술
- Data Engineering
- leetcode
- terraform
- airflow webserver
- Python
- telegram
Archives
- Today
- Total
Lim Seunghyun Space
[Leetcode] Climbing stairs 본문
문제 링크
Climbing Stairs - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
문제 해설
- 계단의 정상에 도달하려면 n번의 걸음을 해야한다.
- 매번 1개 혹은 2개의 계단을 오를 수 있다.
- 얼마나 많은 방법으로 정상에 오를 수 있는가
나의 풀이 (Python3)
class Solution:
def climbStairs(self, n):
if n <= 2:
return n
dp = [0 for i in range(n+1)]
dp[0] = 0 # 없는 값이지만 계산을 쉽게 하기 위해 0으로 초기화
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
- n = 1이면 계단이 한 개이므로 결과는 1
- n = 2이면 계단이 두 개, 결과는 step1 + step1, step2로 2
- 이후 케이스를 계속 반복하면 규칙성이 보이는데 n에서는 n - 1번째 결과 값과 n - 2번째 결과 값의 합이 된다.
- f(n) = f(n-1) + f(n-2) 로 피보나치와 동일하다.
Github : https://github.com/Limseunghyun95/code_test/blob/master/leetcode/climbing_stairs.py
GitHub - Limseunghyun95/code_test: 코딩 테스트 연습 공간
코딩 테스트 연습 공간. Contribute to Limseunghyun95/code_test development by creating an account on GitHub.
github.com
참고 자료
- https://www.youtube.com/watch?v=Y0lT9Fck7qI&ab_channel=NeetCode
728x90
'Algorithm > 문제' 카테고리의 다른 글
[백준 온라인 저지] 설탕 배달 (0) | 2022.01.24 |
---|---|
[백준 온라인 저지] 진법 변환 (0) | 2021.12.30 |
[프로그래머스] 문자열 압축 (0) | 2021.12.05 |
[HackerRank] Validating Roman Numerals (0) | 2021.11.21 |
[백준 온라인 저지] 01타일 (0) | 2021.11.11 |