코딩테스트/Python

[python 구름] 피보나치 수

nahkim 2023. 5. 21. 22:48

F(K)를 1000000007로 나눈 나머지 출력

📜 접근 방법

 

❌ 실패 코드

런타임 에러

import sys
input = sys.stdin.readline

def fibo(n):
	if n <= 2:
		return 1
	return (fibo(n - 1) + fibo(n - 2)) % (10 ** 9 + 7)

N = int(input())
print(fibo(N))

 

✅ 정답 코드

import sys
sys.setrecursionlimit(111111)

# 위의 코드를 그냥 실행하면 스택 메모리 제한으로 인해 일부 테스트 케이스를 통과 불가
# 아래 주석 처리된 코드와 같이 실행하면, 스택 메모리 제한을 임시적으로 조금 늘려서 문제를 해결할 수 있음
# 하지만 시스템에 직접 접근하는 코드이므로, 일반적으로 코딩 테스트를 응시할 때는 사용하면 안되는 코드임

'''
import resource
resource.setrlimit(resource.RLIMIT_STACK, (64 * 1024 * 1024, -1))
'''

MOD = 10**9 + 7
F = [-1 for _ in range(100008)]

def fib(n):
    if F[n] != -1:
        return F[n]
    if n <= 2:
        return 1
    F[n] = (fib(n - 1) + fib(n - 2)) % MOD
    return F[n]
    
N = int(input())
print(fib(N))

 

💡알게 된점