본문 바로가기
코딩테스트/Python

[python 구름] 피보나치 수

by nahkim 2023. 5. 21.

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