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))
💡알게 된점
'코딩테스트 > Python' 카테고리의 다른 글
[python 구름] 구름이의 여행 (0) | 2023.05.23 |
---|---|
[python 구름] 보드 게임 (0) | 2023.05.22 |
[python 구름] 구름 스퀘어 (0) | 2023.05.20 |
[python 구름] 직사각형 만들기 (0) | 2023.05.19 |
[python 구름] 거스름돈 (0) | 2023.05.17 |