๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Java] [Silver3] 14501๋ฒˆ_ํ‡ด์‚ฌ

Dbswnstjd 2024. 4. 5. 23:33

๋ฌธ์ œ

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

 

14501๋ฒˆ: ํ‡ด์‚ฌ

์ฒซ์งธ ์ค„์— ๋ฐฑ์ค€์ด๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

ํ’€์ด

package Baekjoon;

import java.io.*;
import java.util.*;

public class B_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];
       int[] p = new int[N];
        
        StringTokenizer st;
        
        for(int i=0; i<N; i++){
            st = new StringTokenizer(br.readLine());
            
            t[i] = Integer.parseInt(st.nextToken());
            p[i] = Integer.parseInt(st.nextToken());
        }
        
        int[] dp = new int[N+1]; // 1์ผ์— ์ผํ•œ ๋ˆ์€ 2์ผ์ฐจ์— ๋ˆ„์ ๋˜๊ธฐ ๋•Œ๋ฌธ
         // ๋‚ ์งœ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•ด๋‹น ๋‚ ์งœ์— ๋Œ€ํ•œ ์ตœ๋Œ€ ์š”๊ธˆ์„ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด, ๊ฐ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋งˆ๋‹ค ์ตœ๋Œ€ ์š”๊ธˆ์„ ์ €์žฅํ•ด๋†“๋Š”๋‹ค. 
        
        for(int i=0; i<N; i++){
            if(i + t[i] <= N) { 
                // ๋‚ ์งœ๊ฐ€ ์ดˆ๊ณผ๋˜์ง€ ์•Š์œผ๋ฉด์„œ ํ•ด๋‹น ๋‚ ์งœ์— ๋ฒˆ ๋ˆ์„ ๊ณ„์‚ฐ
            	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]);
    }
}

 

์‚ผ์„ฑ ๊ธฐ์ถœ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ ์ž๋ฐ”๋กœ๋Š” ์ฒ˜์Œ DP ๋ฌธ์ œ๋ฅผ ํ’€๊ฒŒ ๋˜์—ˆ๋‹ค. 

๋ˆ„์ ๋œ ๊ฐ’์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ํฐ ์–ด๋ ค์›€์€ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ ๋‚ ์งœ๊ฐ€ ์ดˆ๊ณผ๋˜๋Š” ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.