PS/This
개미 전사
RUBY_루비
2020. 8. 6. 16:17
출처::
분류:: 다이나믹 프로그래밍
1. 문제 이해 및 해결과정
1) i-1번째 식량창고를 털기로 결정한 경우, 현재의 식량창고를 털 수 없다.
2) i-2번째 식량창고를 털기로 결정한 경우, 현재의 식량 창고를 털 수 있다.
1번과 2번 중 더 큰 값을 선택하면 된다
=> a(i) = max(a(i-1),a(i-2)+k)
2. 풀이방법
1. bottom-up
#개미 전사
#
import sys
sys.stdin = open("input.txt","r")
dp=[0]*101
n=int(input())
arr=list(map(int,input().split()))
dp[0]=arr[0]
dp[1]=max(arr[0],arr[1])
for i in range(2,n):
dp[i]=max(dp[i-1],dp[i-2]+arr[i])
print(dp[n-1])
3. 오답원인
4. 알게된 점