https://www.acmicpc.net/problem/15486
1. 아이디어
기존 퇴사 문제에서 N의 크기가 커진 문제로 다이나믹 프로그래밍을 통해서 해결할 수 있다.([코딩테스트 준비/백준] - [백준] 14501번 - 퇴사 [Java])
2. 문제풀이
기존 퇴사 문제의 다이나믹 프로그래밍 풀이에서 N의 크기와 상담 종료일이 오버됐을 때를 위한 패딩만 변경하는 방식으로 구현했다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[] t = new int[1 + N];
int[] p = new int[1 + N];
for (int i = 1; i <= N; i++) {
st = new StringTokenizer(br.readLine());
t[i] = Integer.parseInt(st.nextToken());
p[i] = Integer.parseInt(st.nextToken());
}
int[] dp = new int[1 + N + 1 + 50];
for (int i = 1; i <= N; i++) {
dp[i + t[i]] = Math.max(dp[i + t[i]], dp[i] + p[i]);
dp[i + 1] = Math.max(dp[i + 1], dp[i]);
}
System.out.println(dp[N + 1]);
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2588번 - 곱셈 [Java] (0) | 2025.01.01 |
---|---|
[백준] 9465번 - 스티커 [Java] (0) | 2025.01.01 |
[백준] 14501번 - 퇴사 [Java] (1) | 2025.01.01 |
[백준] 2752번 - 세수정렬 [Java] (1) | 2025.01.01 |
[백준] 2693번 - N번째 큰 수 [Java] (1) | 2025.01.01 |