๐๏ธ 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 ๋ฌธ์ ๋ฅผ ํ๊ฒ ๋์๋ค.
๋์ ๋ ๊ฐ์ ์ต๋๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ํฐ ์ด๋ ค์์ ์๋ค. ํ์ง๋ง ์ฃผ์ํด์ผํ ์ ์ ๋ ์ง๊ฐ ์ด๊ณผ๋๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ์๊ฐํด์ผ ํ๋ค.