코딩 테스트/LeetCode

70. Climbing Stairs (계단 오르기)

포카리tea 2023. 5. 23. 00:39

당신은 계단을 오르고 있습니다. 정상에 오르기 위해서는 n개의 단계가 필요합니다.
매번 당신은 1단계 또는 2단계를 오를 수 있습니다. 당신은 몇 가지 다른 방법으로 정상에 오를 수 있습니까?

예시 1:

입력: n = 2
출력: 2
설명: 정상에 오르는 두 가지 방법이 있습니다.
1. 1단계 + 1단계
2. 2단계

 

예시 2:

입력: n = 3
출력: 3
설명: 정상에 오르는 세 가지 방법이 있습니다.
1. 1단계 + 1단계 + 1단계
2. 1단계 + 2단계
3. 2단계 + 1단계

 

조건:

  • 1 <= n <= 45

 

정답:

public class Solution {
    public int ClimbStairs(int n) {
        if (n == 1) 
            return 1;

        int[] result = new int[n + 1];
        result[1] = 1;
        result[2] = 2;

        for (int i = 3; i <= n; i++) 
        {
            result[i] = result[i - 1] + result[i - 2];
        }

        return result[n];
    }
}

해설: 

1일때는 하나뿐이니 1을 return 해주고 그 외의 경우엔

n-1 + n-2 에서의 경우의 수를 합치면 n번째의 가능한 경우의 수가 나오므로 앞에서부터 분할하여 풀었습니다.