내일배움캠프 AI/페어프로그래밍

[페어프로그래밍] 230426 피보나치 수 | 다중할당 for

생각하는 코댕이 2023. 4. 27. 02:27
728x90

피보나치 수


페어프로그래밍 결과 코드

# 페어프로그래밍으로 제작한 코드
def solution(n):
    answer = []
    for i in range(n+1):
        if i == 0 or i == 1:
            answer.append(i)
        else:
            f = answer[i-1] + answer[i-2]
            answer.append(f % 1234567) # f(n)%m-> m=1234567 수가 너무 커지기 때문에! 소수인 1234567 로 나눈것!
    return answer[-1]

+테스트용 코드

더보기
import os
os.system("cls")

def solution(n):
    answer = []
    for i in range(n+1):
        if i == 0 or i == 1:
            answer.append(i)
        else:
            f = answer[i-1] + answer[i-2]
            answer.append(f % 1234567) # f(n)%m-> m=1234567 수가 너무 커지기 때문에! 소수인 1234567 로 나눈것!
    return answer[-1]  # [0,1,1,2] [0,1,1,2,3,5]

# ===============테스트공간==================
n=3 #2
m=5 #5
l=1500 #1058440
print("정답2 |",solution(n))
print("정답5 |",solution(m))
print("정답1058440 |",solution(l))

리팩토링 코드

# 리팩토링 코드 | 다중할당 , for, range , 나머지 연산자 사용
def solution(n):
    a,b=0,1
    for _ in range(n):
        a, b = b, (a+b)%1234567
    return a

시사점 or 새로이 알게된 점

다중할당을 통해 피보나치 수의 재귀성을 함수로 구현해 보았다.
문제에서 요구하는 바가 피보나치 함수 구현이 아니라, 1234567로 나누는 것이기에 런타임에러가 나지만, 재귀함수를 써보았다.

def solution(n):
    if n<2:
        return n
    return solution(n-2)+solution(n-1)
    print(solution(n)%1234567)

재귀함수를 사용해 피보나치 수 를 구해보았다.

728x90