Algorithm/Algorithm 문제
백준_14501 퇴사 (DP)
kjyyjk
2024. 4. 13. 21:11


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BJ_14501_퇴사 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] t = new int[n + 1];
int[] p = new int[n + 1];
int[] result = new int[n + 1];
int i;
StringTokenizer st;
for (i=1; i<n+1; i++) {
st = new StringTokenizer(br.readLine(), " ");
t[i] = Integer.parseInt(st.nextToken());
p[i] = Integer.parseInt(st.nextToken());
}
for (i=1; i<n+1; i++) {
if (i + t[i] < n + 2) { //i일의 작업이 퇴사일 이전에 끝날 경우
result[i + t[i] - 1] = Math.max(result[i + t[i] - 1], result[i - 1] + p[i]); //작업이 끝나는 날 최댓값 저장
}
result[i] = Math.max(result[i-1], result[i]); //전날과 오늘 중 최댓값 저장
}
System.out.println(new StringBuilder().append(result[n]));
}
}
14501번: 퇴사
첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.
www.acmicpc.net