이것도 간단한 문제였다. 피보나치 수열인데 조금만 다른 피보나치 수열이라 생각하면 된다.
런타임 에러가 뜬 풀이
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개를 미리 정의를 배열에 정의를 해주고 시작하면 빠르게 풀린다.
'알고리즘 테스트 > 백준 문제풀이 및 해설' 카테고리의 다른 글
<백준 문제풀이: 11054번> 파이썬 - 가장 긴 바이토닉 부분 수열 (0) | 2020.12.18 |
---|---|
<백준 문제풀이: 15652번> 파이썬 - N과 M(4) (0) | 2020.12.16 |
<백준 문제풀이: 15651번> 파이썬 - N과 M (3) (0) | 2020.12.14 |
<백준 문제풀이: 15650번> 파이썬 - N과 M(2) (0) | 2020.12.13 |
<백준 문제풀이: 15649번> 파이썬 - N과 M(1) (0) | 2020.12.12 |