728x90
코딩테스트 연습 - 피보나치 수 | 프로그래머스 스쿨 (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 |