녕의 학습 기록

백준_14501 퇴사 (DP) 본문

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

 

'Algorithm > Algorithm 문제' 카테고리의 다른 글

백준_11726 2xn 타일링 (DP)  (0) 2024.04.15
백준_2193 이친수 (DP)  (0) 2024.04.14
백준_1463 1로 만들기 (DP)  (0) 2024.04.11
백준_1947 선물 전달 (조합 순열)  (0) 2024.04.08
백준_1256 사전 (조합 순열)  (0) 2024.04.08