728x90
문제
DP 문제이다.
n개의 계단이 있을 때, 한 번에 1개 또는 2개의 계단을 올라갈 수 있다.
꼭대기에 오르기까지 계단을 오르는 방법이 몇 가지 인가?
https://leetcode.com/problems/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) n-1번 째 계단에서 1개의 계단을 오르기
2) n-2번 째 계단에서 2개의 계단을 오르기
위 2가지의 방법이 있다.
따라서, 이를 1개 계단을 도달하는 것 부터 n개 계단 까지 순서대로 계산하여 저장해 나가면 된다.
1개의 계단을 도달하는 방법은 1가지 이므로, 미리 저장하고 2개 계단부터 계산한다. (예외 처리)
코드
public int climbStairs(int n) {
int[] ways = new int[n + 1]; // ways[i] : i번 째 계단을 오르는 방법의 수
ways[0] = ways[1] = 1;
for (int i = 2; i <= n; i++)
ways[i] = ways[i - 1] + ways[i - 2];
return ways[n];
}
728x90
'알고리즘 문제풀이 > LeetCode' 카테고리의 다른 글
[LeetCode] 100. Same Tree (0) | 2021.07.05 |
---|---|
[LeetCode] 104. Maximum Depth of Binary Tree (0) | 2021.07.04 |
[LeetCode] 322. Coin Change (1) | 2021.06.10 |
[LeetCode] 238. Product of Array Except Self (0) | 2021.06.06 |
[LeetCode] 217. Contains Duplicate (0) | 2021.06.06 |