Algorithm Study

[BOJ] 14051: 퇴사/ JAVA, DP

hyun-1200 2022. 5. 5. 14:09

https://www.acmicpc.net/problem/14501

 

14501번: 퇴사

첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.

www.acmicpc.net

 

 

d[N]= N일까지 일했을 때의 최대금액.

 

for문 안에서 day+ T[day] <= 현재날짜 의 조건에 적합하면,

ex. 4일째 경우에, 1일째 + T[1] <= 4  이라면

max( d[4], d[1]+P[1]) 처럼 최대값을 비교 후, 최대값이 d[N]이 된다.

 

(+) N일까지는 일 할 수 있으므로, N+1일때의 최대값을 출력해야한다.

따라서 d[N] = new int[17] 로 범위를 설정해줘야 한다.

 

 

풀이는 아래와 같다.