문제로

내가 푼 것

상상도 못함

정답

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19

class Solution {
    public int climbStairs(int n) {
        if (n == 1) {
            return 1;
        } else if (n == 2) {
            return 2;
        }

        int prev1 = 1, prev2 = 2;
        for (int i = 3; i <= n; i++) {
            int current = prev1 + prev2;
            prev1 = prev2;
            prev2 = current;
        }

        return prev2;
    }
}

참고

피보나치 수열을 이용하면 간단히 풀 수 있어서 Easy인가보다

  1. 프로그래밍
  • prev1은 한 계단 전의 방법 수, prev2는 두 계단 전의 방법 수를 저장합니다.
  • for (int i = 3; i <= n; i++) 루프는 3부터 n까지 각 계단에 대한 방법 수를 계산합니다.
  • int current = prev1 + prev2; 현재 계단에 도달하는 방법의 수는 이전 두 계단의 방법 수의 합입니다.
  • prev1 = prev2;는 prev1을 업데이트하여 한 계단 전의 방법 수를 갱신합니다.
  • prev2 = current;는 prev2를 업데이트하여 현재 계단의 방법 수를 갱신합니다.
  1. 결과 반환:
  • 루프가 끝나면, prev2에는 n 계단에 도달하는 방법의 수가 저장되어 있습니다. 따라서 prev2를 반환합니다.