๋ฌธ์
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 ๋ฌธ์ ๋ฅผ ํ๊ฒ ๋์๋ค.
๋์ ๋ ๊ฐ์ ์ต๋๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ํฐ ์ด๋ ค์์ ์๋ค. ํ์ง๋ง ์ฃผ์ํด์ผํ ์ ์ ๋ ์ง๊ฐ ์ด๊ณผ๋๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ์๊ฐํด์ผ ํ๋ค.
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Java] [Silver2] 1874๋ฒ_์คํ ์์ด (0) | 2024.01.13 |
---|---|
๐ฉ [๋ฐฑ์ค] [Java] [Silver3] 1966๋ฒ_ํ๋ฆฐํฐ ํ (0) | 2024.01.12 |
๐ฉ [๋ฐฑ์ค] [Java] [Silver4] 10866_๋ฑ (1) | 2024.01.10 |
๐ฉ [๋ฐฑ์ค] [Java] [Silver2] 1260๋ฒ_DFS์ BFS (0) | 2024.01.08 |
๐ฉ [๋ฐฑ์ค] [Java] [Silver5] 2941๋ฒ_ํฌ๋ก์ํฐ์ ์ํ๋ฒณ (0) | 2023.12.10 |