[LeetCode] 70. Climbing Stairs - 파이썬(Python)

2022. 5. 13. 17:24·Solving Algorithm Problem/LeetCode

문제 링크 : 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

유형 : 동적 계획법(Dynamic Programming)

문제 설명

한번에 계단을 1칸 혹은 2칸을 오룰 수 있을 때, 정수 n이 주어지면 n번째 계단에 오를 수 있는 방법의 개수를 return 하는 문제이다.

Example 1)
Input: n = 2
Output: 2
Example 2)
Input: n = 3
Output: 3

제한사항

  • 1 <= n <= 45

문제 풀이

Recursive한 방법으로 생각해보자. 해당 문제에서 n번째 계단에 오를 수 있는 방법은 ① n-1번째 계단에서 오르는 방법, ② n-2번째 계단에서 오르는 방법으로, 총 두 가지이다. 따라서 n번째 계단에 오를 수 있는 경우의 수는 n-1번째 계단에 오를 수 있는 경우의 수에 n-2번째 계단에 오를 수 있는 경우의 수를 더한 값이다. 이를 점화식으로 나타내면 아래와 같고, 가장 작은 문제의 상태를 나타내는 기저 상태는 1번째 계단에 오르는 경우와 2번째 계단에 오르는 경우로 각각 1, 2라는 해를 가진다. 점화식과 기저 상태를 알면 Top-Down 방식이나 Bottom-Up 방식으로 코드를 작성할 수 있다.

성공 코드

from typing import List

class Solution:
    def climbStairs(self, n: int) -> int:
        dp_array = [0,1,2]

        if n < len(dp_array):
            return dp_array[n]

        for i in range(3, n+1):
            ith_way = dp_array[i-1] + dp_array[i-2]
            dp_array.append(ith_way)

        return dp_array[n]

시간 복잡도 : O(n)

공간 복잡도 : O(n)

 

저작자표시 (새창열림)
'Solving Algorithm Problem/LeetCode' 카테고리의 다른 글
  • [LeetCode] 64. Minimum Path Sum - 파이썬(Python)
  • [LeetCode] 746. Min Cost Climbing Stairs - 파이썬(Python)
  • [LeetCode] 39. Combination Sum - 파이썬(Python)
  • [LeetCode] 77. Combinations - 파이썬(Python)
김행만
김행만
이모저모 다 적기
  • 김행만
    hyeinisfree
    김행만
  • 전체
    오늘
    어제
    • 분류 전체보기 (41)
      • AWS (0)
      • Network (6)
      • CICD (1)
      • Spring (0)
      • Ruby on Rails (0)
      • Java (12)
      • Python (1)
      • Computer Science (6)
        • Algorithm (2)
        • Data Structure (3)
        • Database (0)
        • Design Pattern (1)
      • Solving Algorithm Problem (12)
        • LeetCode (12)
        • Programmers (0)
      • 자격증 (1)
      • Tip (1)
      • Etc (1)
        • 도서, 강의 (1)
        • Talk (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    CISCO
    cisco packet tracer
    Packet Tracer
    java 필수 문법
    Network
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
김행만
[LeetCode] 70. Climbing Stairs - 파이썬(Python)
상단으로

티스토리툴바