본문 바로가기
Xcode/Swift - Algorithm

Swift) LeetCode(Easy) - Climbing Stairs (DP)

by 후르륵짭짭 2020. 7. 13.
728x90
반응형

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

안녕하세요!! 후르륵 짭짭 입니다!

오늘도 DP 알고리즘에 대해서 공부 해보도록 하겠습니다.

** 전체 코드 **

func climbStairs(_ n: Int) -> Int {
        
    var start : Int = 3
    var array : [Int] = [1,2]
    
    while ( start <= n ){
        
        let total = array[0] + array[1]
        
        array = swap(array: array, new: total)
        
        start += 1
    }
    
    if n == 1 {
        return 1
    }
    
    return array[1]
}

func swap(array : [Int], new : Int ) -> [Int] {
    
    var newArray = array
    
    let temp = newArray[1]
    newArray[1] = new
    newArray[0] = temp
    
    return newArray
}

 

** 문제 **

계단을 목표한 N 층 까지 올라가는데, 올라가는 방법이 1층 과 2층 올라가기 두가지 방법이 있습니다.

따라서 N층까지 올라갈 수 있는 총 방법을 출력하는 것이 이 문제 입니다.

** 해결 방법 **

그냥 DP 문제 입니다.

1 - 1

2 - 2

3 - 3

4 - 5

5 - 8

6 - 13 ,,,,

이렇게 증가 합니다.

그래서 현재 위치 = ( 현재위치 - 1 ) +  ( 현재위치 - 2 )

이렇게 해주면 됩니다.

 

참 쉽죠???

LeetCode가 좋은 이유는 Solution을 볼 수 있기 때문에,

다양한 해결 방법을 문서화 해놓아서 좋습니다!

그래서 알지 못 했던 알고리즘을 공부 할 수 있져!

또한 해결방법 보면서 모르는 영어단어 까지 공부하면 더 좋습니다~

 

** 영어 단어 **

Induction - 귀납법 , 유도

substructure - 하부구조

redundantly - 과다하게

모두 즐코코코코

728x90
반응형

댓글