출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

이것도 간단한 문제였다. 피보나치 수열인데 조금만 다른 피보나치 수열이라 생각하면 된다.

런타임 에러가 뜬 풀이

import sys

T = int(sys.stdin.readline())

a,b,c,d,e = 1, 1, 1, 2, 2
first_nums = [a,b,c,d,e]

def new_series(n):
    if n <= 5:
        return first_nums[n-1]
    else:
        for i in range(n-5):
            a,b,c,d,e = b,c,d,e,a+e
        return e

for i in range(T):
    print(new_series(int(sys.stdin.readline())))

풀이 자체는 문제 없어 보였다. 하지만 런타임 에러가 뜨는 것을 보아 아마도 시간이 각 테스트 케이스마다 함수를 돌려줘야 하기 때문에 시간이 너무 오래 걸려서 런타임 에러가 뜨는 듯 했다. 따라서 그냥 미리 모든 숫자들을 찾아놓고 시작하면 될 듯 했다.

제출한 정답

import sys

T = int(sys.stdin.readline())

first_five = [1,1,1,2,2]
for i in range(95):
    first_five.append(first_five[i+4] + first_five[i])

for i in range(T):
    print(first_five[int(sys.stdin.readline())-1])

N의 범위는 100까지라고 했으므로 100개를 미리 정의를 배열에 정의를 해주고 시작하면 빠르게 풀린다.