You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
if (i + t[i] <= n) dp[i] = max(dp[i + time[i]], dp[i + time[i]] + pay[i])
현재 날짜에서 소요 시간과 비용을 더해 dp에 저장한다.
dp : N일에 얻을 수 있는 최대 수익이후, 중복될 때 최대값을 넣는다.
val dp =IntArray(N+1){0}
for(i in0 until N){
val next = i+time[i]
//날짜가 범위를 넘어가지 않는 경우if(next<=N) {
dp[next] =Math.max(dp[next] , dp[i]+pay[i])
}
dp[i+1] =Math.max(dp[i+1],dp[i])
}
next는 x번째 날 일을 했을 때 끝나서 다시 시작할 수 있는 당일을 의미한다
ex) 1번째날의 업무가 3일 걸린다면 1,2,3 일까지 일하고 4일부터 새로운 일을 시작할 수 있을 것이다.
The text was updated successfully, but these errors were encountered:
백준 14501 퇴사
https://www.acmicpc.net/problem/14501
[문제유형] 다이나믹 프로그래밍 , 브루트포스 알고리즘
점화식
if (i + t[i] <= n) dp[i] = max(dp[i + time[i]], dp[i + time[i]] + pay[i])
현재 날짜에서 소요 시간과 비용을 더해 dp에 저장한다.
dp : N일에 얻을 수 있는 최대 수익이후, 중복될 때 최대값을 넣는다.
next는 x번째 날 일을 했을 때 끝나서
다시 시작할 수 있는 당일
을 의미한다ex) 1번째날의 업무가 3일 걸린다면 1,2,3 일까지 일하고 4일부터 새로운 일을 시작할 수 있을 것이다.
The text was updated successfully, but these errors were encountered: