https://www.acmicpc.net/problem/9095
N=int(input())
def f(num):
if num==1:
return 1
elif num==2:
return 2
elif num==3:
return 3
else:
return f(num-1)+f(num-2)+f(num-3)
for i in range(N):
num=int(input())
print(f(num))
https://www.acmicpc.net/problem/1149
N = int(input())
dist = []
for i in range(N):
dist.append(list(map(int, input().split())))
for i in range(1, len(dist)):
dist[i][0] = min(dist[i - 1][1], dist[i - 1][2]) + dist[i][0]
dist[i][1] = min(dist[i - 1][0], dist[i - 1][2]) + dist[i][1]
dist[i][2] = min(dist[i - 1][0], dist[i - 1][1]) +dist[i][2]
print(min(dist[n - 1][0], dist[n - 1][1], dist[n - 1][2]))
https://www.acmicpc.net/problem/2156
n=int(input())
li=[0]*10000
for i in range(n):
li[i]=int(input())
d=[0]*10000
d[0]=ali[0]
d[1]=li[0]+li[1]
d[2]=max(li[2]+li[0], li[2]+li[1], d[1])
for i in range(3,n):
d[i]=max(li[i]+d[i-2], li[i]+li[i-1]+d[i-3], d[i-1])
print(max(d))
저는 다이나믹 프로그래밍 이제 겨우 느낌만 알 것 같아요,, 깔끔한 코드 잘 보고 갑니다! 이번주 수고 많으셨어요~