https://leetcode.com/problems/climbing-stairs/
문제 설명
당신은 계단을 오르고 있습니다. 정상에 도달하려면 n 단계가 필요합니다.
매번 1 또는 2개의 계단을 오를 수 있습니다. 얼마나 많은 유일한 방법으로 계단을 오를 수 있습니까?
풀이
- 예를들어 4칸의 계단으로 올라오는 경우
- 정상에 올라 오기전에 밟을 수 있는 계단의 수는 1개 또는 2개이다
- 1개의 계단이 남았다면 지금까지 3칸의 계단을 올라온 것이고
2개의 계단이 남았다면 지금까지 2칸의 계단을 올라온 것이다 - 다시 3칸의 계단이 정상이라 가정하고 정상에 올라 오기전에 밟을 수 있는 계단의 수는 1개 또는 2개이다
- 1개의 계단이 남았다면 지금까지 2칸의 계단을 올라온 것이고
2개의 계단이 남았다면 지금까지 1칸의 계단을 올라온 것이다 - 이것을 그림으로 나타내면
풀이 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Solution {
public int climbStairs(int n) {
int result = 1;
int prev = 1;
int pprev = 0;
for(int i = 1; i < n; i++){
pprev = prev;
prev = result;
result = pprev + prev;
}
return result;
}
}
|
cs |
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스 60057] Lv.2 문자열 압축 (0) | 2022.08.21 |
---|---|
[프로그래머스 118667] 두 큐 합 같게 만들기 (0) | 2022.08.21 |
[프로그래머스 17680] 캐시 (0) | 2022.01.10 |
[백준 9935]문자열 폭발 (0) | 2020.11.13 |
[백준 1647]도시 분할 계획 (0) | 2020.11.08 |