반응형
문제
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?
문제[번역]
n개로 이루어진 계단이 있다.
당신은 한번에 1칸 or 2칸만 올라갈 수 있다.
계단 정상에 오르는 방법의 가짓수는 몇개일까요?
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 <= n <= 45
접근방법
결과값의 규칙이 피보나치로 이루어져 있다는 사실을 알면 문제가 굉장히 쉬워집니다.
피보나치를 dp로 구현했습니다.
코드
class Solution {
public int climbStairs(int n) {
int dp[] = new int[n+1];
dp[0] = 1;
dp[1] = 1;
for(int i=2; i<=n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
}
주의사항
x
반응형
'공부 정리 > LeetCode' 카테고리의 다른 글
[LeetCode] Min Cost Climbing Stairs 자바 (0) | 2022.06.27 |
---|---|
[LeetCode] Minimum Knight Moves 자바 (0) | 2022.06.23 |
[LeetCode] Sqrt(x) (java) (0) | 2022.05.25 |
[LeetCode] Add Binary (java) (0) | 2022.05.24 |
[LeetCode] Length of Last Word (javascript) (0) | 2022.04.11 |
댓글