마찬가지로 점화식을 세운 후 진행한다.
날짜를 거꾸로 계산해야 해서 조금 헷갈렸던 문제..
문제 풀이
import java.util.Scanner;
public class P14501_퇴사준비하기 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int time[] = new int[N+1];
int pay[] = new int[N+1];
int dp[] = new int[N+2];
for(int i=1; i<=N; i++) {
time[i] = sc.nextInt();
pay[i] = sc.nextInt();
}
for(int i=N; i>0; i--) {
if(i + time[i] > N+1) {
// 퇴사 이후에는 불가능
dp[i] = dp[i+1];
} else {
dp[i] = Math.max(pay[i] + dp[i + time[i]], dp[i+1]);
}
}
System.out.println(dp[1]);
}
}'알고리즘 > 백준' 카테고리의 다른 글
| [백준] 온라인 저지 11399번 : ATM(Java), 그리디 & 삽입 정렬 (0) | 2025.02.03 |
|---|---|
| [백준] 온라인 저지 14586번 : 퇴사 2(Java), DP (1) | 2025.01.23 |
| [백준] 온라인 저지 12026번 : BOJ 거리(Java), DP (1) | 2025.01.22 |
| [백준] 온라인 저지 2193번 : 이친수 구하기(Java), DP (0) | 2025.01.14 |
| [백준] 온라인 저지 1463번 : 정수를 1로 만들기(Java), DP (0) | 2025.01.13 |