Lv2. 멀리 뛰기

Hello·2022년 8월 9일
0

코딩테스트 연습 > 멀리 뛰기

1. 풀이 설명

  1. 한 번에 1칸 또는 2칸만 오를 수 있다.
    따라서, memo[i] (i번째 칸을 오를 수 있는 방법의 수) 는 memo[i-1] (i-1 번째 칸까지 올라올 수 있는 경우의 수) + memo[i-2](i-2 번째 칸까지 올라올 수 있는 경우의 수) 이다.
    - i-1 번째에서 1칸을 오르거나 i-2 번째 칸에서 2칸을 올라올 수 있다.

  2. 전형적인 DP 문제로 풀 수 있다.

2. 나의 풀이

python

def solution(n):
    if n == 1:
        return 1
    
    memo = [0] * n
    memo[0] = 1
    memo[1] = 2
    
    for i in range(2, n):
        memo[i] = (memo[i-1] + memo[i-2]) % 1234567
        
    return memo[n-1] 

kotlin

fun solution(n: Int): Long {
    if (n == 1) return 1
        
    val memo = LongArray(n)
    memo[0] = 1L
    memo[1] = 2L
        
    for (i in 2 until n) {
        memo[i] = (memo[i-1] + memo[i-2]) % 1234567
    }
        
    return memo[n-1]
}

3. 배운점

  1. n 이 1인 경우에 대한 예외처리
profile
안녕하세요 :)

0개의 댓글