파이썬으로 부시자! Python with Coreenee

BAEKJOON 9461

문제

스크린샷 2020-01-28 오전 12 04 52

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100)


나의 처음 코드

문제의 예시로 나와있는 값들을 보면, 이 문제는 피보나치 수열과 비슷하게 이루어져 있는것을 알 수 있다. 다만 전 값과 전전 값이 아닌, (전 값 + 5번째 전 값)으로 이루어져 있다. 마찬가지로 피보나치 수열처럼 비슷하게 코딩을 해주면 된다. 그 코드는 아래와 같다.

N = int(input())

fibo_list = [1, 1, 1, 2, 2, 3, 4, 5, 7, 9]
ans = []
#fivo_list에 memorizing 해가는 과정
def return_val(nth : int):
    for i in range(len(fibo_list), nth):
        fibo_list.append(fibo_list[i-1] + fibo_list[i-5])
        
for i in range(N):
    num = int(input())
    #받은 인풋의 값이 이미 fibo_list에 memorized 되어있을 때
    if num <= len(fibo_list):
        ans.append(fibo_list[num-1])
    #받은 인풋의 값이 fibo_list에 memorized 되어있지 않을 때
    else:
        return_val(num)
        ans.append(fibo_list[num-1])
        
for i in ans:
    print(i)

결과는 맞았습니다. 문제에서 답을 준 격이기 때문에, 딱히 어려운 문제가 아니다. 어떻게 memorizing을 할지가 점차 중요해지는 단계이다.