알고리즘/프로그래머스

프로그래머스 Lv2 멀리 뛰기 (python)

개발하는 호랑이 2024. 2. 4. 22:13

멀리 뛰기

풀이

처음엔 재귀로 했으나, 이번에도 maximum에 걸렸다.

dp를 이용했다.
현재 칸의 경우의 수는 1칸 전과 2칸 전의 경우의 수를 합친 것과 같다는 것에 기인했다.
그러니 아래처럼 코드가 나왔따.

def solution(n):
    # n번 칸에 도착할 수 있는 경우의 수는 1칸 전에서의 경우의 수와 2칸 전의 경우의 수를 더한 것.
    dp = [0,1,2] + [0] * 1998
    for i in range(3, n+1):
        dp[i] = dp[i-1] + dp[i-2]
    return dp[n] % 1234567

다른 사람 풀이

다들 비슷비슷하게 풀었다.

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