https://www.acmicpc.net/problem/9461
따라 적어보며 규칙을 파악하려 했다.
1,1,1,2,2,3,4,5,7,9 ....
처음 든 생각
이 생각과 함께 보니 3부터는 숫자가 한 칸마다 변했다. 그럼 피보나치 수열처럼 이전 것들의 합으로 표현되지 않을까 해서 규칙성을 찾아보니
그래서 처음에 n=1 부터 n=100까지 P(n) 값을 리스트에 초기화 해놓고 시작했다.
t = int(input())
tri = [1, 1, 1, 2, 2]
for i in range(4, 100):
tri.append(tri[i] + tri[i - 4])
for _ in range(t):
n = int(input())
print(tri[n - 1])
t에 대한 조건은 없다.
n : 1<=n<=100
n이 100일 때 for문이 약 100회
tri 리스트에 인덱스로 접근 : O(1)
tri 리스트에 append : O(1)
=> O(n)
그 이후 t에 따라 O(t)
채점 결과 : 68ms
이때
백준에서 파이썬 실행시 기본 약 3만KB는 사용되는 것 같다.
int형 리스트의 길이는 n : O(n)
채점 결과 : 31120KB
문제의 알고리즘 분류는