1. 2748(피보나치 수 2)
n = int(input())
mlist = [0] * 91
mlist[1] = 1
for i in range(2, n+1):
mlist[i] = mlist[i-2] + mlist[i-1]
print(mlist[n])
Python
복사
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
초기값 : 0, 1
i≥2 : list[i] = list[i-2] + list[i-1]
1.
DP로 문제를 접근
2.
n을 입력받고 미리 크기가 n+1인 리스트 생성
3.
인덱스가 1인 곳에 1로 초기화
4.
2부터 n까지 for문을 돌며 인덱스가 i-1, i-2인값을 더한 값으로 초기화
2. 9461(파도반 수열)
mlist = [0] * 101
mlist[1] = 1
mlist[2] = 1
mlist[3] = 1
for i in range(4, 101):
mlist[i] = mlist[i-2] + mlist[i-3]
t = int(input())
for i in range(t):
n = int(input())
print(mlist[n])
Python
복사
1, 1, 1, 2, 2, 3, 4, 5, 7, 9
초기값 : 1, 1, 1
i≥4 : list[i] = list[i-2] + list[i-3]
1.
2748번과 접근방식 동일
2.
단, 리스트 크기는 주어진 n의 가장 큰 값인 100에 +1한 101로 생성
3.
인덱스가 1, 2, 3인 곳에 1로 초기화
4.
4부터 101까지 for문을 돌며 인덱스가 i-2, i-3인값을 더한 값으로 초기화