cording test

LV.1 피보나치 수

JM Lee 2023. 4. 27. 01:14
728x90

코딩테스트 연습 - 피보나치 수 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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]
# 리팩토링 코드
def solution(n):
    a,b=0,1
    for _ in range(n):
        a, b = b, (a+b)%1234567
    return a
# ===============테스트공간==================
n=3 #2
m=5 #5
l=1500 #1058440
print("정답2 |",solution(n))
print("정답5 |",solution(m))
print("정답1058440 |",solution(l))

그리고 아까 낮에 배운 재귀함수를 써먹어보았는데,

과정이 엄청 많기 때문인지 큰 숫자 계산에서는 런타임 에러가 많이 났는데, 나름 배운 걸 써먹어보자면

def solution(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return solution(n - 1) + solution(n - 2)

 

'cording test' 카테고리의 다른 글

LV.1 비밀지도/ 파이썬 bin함수 / zfill 함수  (0) 2023.05.02
LV.2 최댓값과 최솟값  (4) 2023.04.28
삼총사  (0) 2023.04.25
LV.1 숫자 문자열과 영단어  (0) 2023.04.25
안전지대  (3) 2023.04.24