susinlee 님의 블로그

82. 멀리 뛰기 본문

코드카타/Python

82. 멀리 뛰기

susinlee 2025. 1. 5. 15:16

[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/12914

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

[풀이]

1. 문제의 답에는 피보나치 수열의 규칙이 있음

2. 피보나치 수열을 구현하면 되는데, 재귀함수로 구현할 때는 그 과정에서 메모이제이션을 통해 시간복잡도 최적화

3. 구현할 때 n-2를 먼저 할 것

 

재귀함수로 구현

def solution(n):
    memo = {1:1, 2:2}
    return pibo(n, memo) % 1234567

def pibo(n, memo):
    
    if n in memo:
        return memo[n]

    memo[n] = (pibo(n - 2, memo) + pibo(n - 1, memo))
    return memo[n]

 

for 문으로 구현

def solution(n):
    if n == 1:
        return 1 % 1234567
    elif n == 2:
        return 2 % 1234567
    else:
        a,b = 1,2
        for i in range(n-2):
            a, b  = b, a+b
        return b % 1234567

 

'코드카타 > Python' 카테고리의 다른 글

84. 괄호 회전하기  (0) 2025.01.07
83. 귤고르기  (0) 2025.01.06
신고 결과 받기  (0) 2025.01.02
공원 산책  (0) 2024.12.31
달리기 경주  (1) 2024.12.30