포스트

Climbing Stairs

LeetCode 70. Climbing Stairs

원문

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이라면 1을 반환한다.
아니라면 현재 값을 나타내는 변수 now와 이전 값을 나타내는 변수 before를 선언한다. 둘 모두 초기값은 1이다.
1부터 n - 1까지 순회하며 다음을 반복한다.

  1. 변수 tempnow의 값을 저장한다.
  2. nowtemp + before로 갱신한다.
  3. before의 값을 temp의 값으로 변경한다.

순회가 끝나면 now를 반환한다.

코드

Python

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 1: return 1

        now, before = 1, 1

        for i in range(1, n):
            temp = now
            now = temp + before
            before = temp

        return now

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
    public int climbStairs(int n) {
        if (n == 1) {
            return 1;
        }

        int now = 1, before = 1;

        for (int i = 1; i < n; i++) {
            int temp = now;
            now = temp + before;
            before = temp;
        }

        return now;
    }
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.