n번째 피보나치 수를 1234567로 나눈 나머지 값을 반환하라는 문제인데 나는 보자마자 재귀식이 생각나서 함수를 만들어서 호출했다.
def solution(n):
answer = fib(n) % 1234567
return answer
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
return fib(n - 1) + fib(n - 2)
근데 이게 n값이 작으면 정답인데 테스트케이스를 돌려보니 n값이 커지면 시간초과와 recursion오류가 나서 반복문으로 변경해서 해결했다.
def solution(n):
fib0 = 0
fib1 = 1
if n == 0:
return 0
elif n == 1:
return 1
else:
for i in range(n):
tmp = fib0 + fib1
fib0, fib1 = fib1, tmp
answer = fib0 %1234567
return answer