๋ฌธ์
https://www.acmicpc.net/problem/15486
๋ฌธ์ ์ดํด
N์ผ ๋์ ๊ฐ๋ฅํ ์๋ด ์ผ์ ์ด ์ฃผ์ด์ง๋ค.- ์๋ด์ ๊ธฐ๊ฐ, ์์ต
N + 1์ผ์งธ ๋๋ ๋ ํด์ฌํ๊ธฐ ์ํด, ํด์ฌ ์ (N์ผ ๋ด)์ ๋๋๋ ์๋ด๋ค์ ์ ํํด ์ต๋ ์์ต์ ๊ตฌํ๋ค.- ํ๋ฃจ์ ํ๋์ ์๋ด๋ง ํ ์ ์์ด์, ์๋ด์ ์์ํ๋ฉด ํด๋น ์๋ด ๊ธฐ๊ฐ ๋์ ๋ค๋ฅธ ์๋ด์ ํ ์ ์๋ค.
- ๋๋๋ ๋ ์ด
N์ผ์ ๋์ด๊ฐ๋ฉด ๊ทธ ์๋ด์ ์ํํ ์ ์๋ค.
DP ๊ตฌํ
dp[i]:i์ผ๊น์ง์ ์ต๋ ์ด์ต
- ์ ๋ ์ด์ต ์ ์ฅ
dp[i] = max(dp[i], dp[i-1]) i์ผ์ ์๋ด์ ์์- ๋๋๋ ๋ :
end = i + consults[i].t - 1 - ํด์ฌ ์ ์ ๋๋๋ ์๋ด๋ง ์ ํจ:
end <= n i - 1์ผ๊น์ง์ ์ต๋ ์์ต์ ์ด๋ฒ ์๋ด์ ์์ต์ ๋ํด์ ์ต๋๊ฐ ๋ฐ์dp[end] = max(dp[end], dp[i - 1] + consults[i].p)
- ๋๋๋ ๋ :
- ์ต์ข
์์ต:
dp[n]
์ฝ๋
import java.util.*;
import java.io.*;
public class Main {
static class Consult {
int t, p;
public Consult(int t, int p) {
this.t = t;
this.p = p;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Consult[] consults = new Consult[n + 1];
for (int i = 1; i <= n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
consults[i] = new Consult(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
} // ์
๋ ฅ ๋
int[] dp = new int[n + 1]; // idx์ผ๊น์ง์ ์ต๋ ์์ต
for (int i = 1; i <= n; i++) {
dp[i] = Math.max(dp[i], dp[i - 1]);
int end = i + consults[i].t - 1; // ๋๋๋ ๋
if (end <= n)
dp[end] = Math.max(dp[end], dp[i - 1] + consults[i].p);
}
System.out.println(dp[n]);
}
}'๐ญ Problem Solving > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ][Java] 16236. ์๊ธฐ ์์ด (0) | 2025.10.01 |
|---|---|
| [BOJ][Java] 2533. ์ฌํ๋ง ์๋น์ค(SNS) (0) | 2025.09.24 |
| [BOJ][Java] 16930. ๋ฌ๋ฆฌ๊ธฐ (4) | 2025.09.09 |
| [BOJ][Java] 14503. ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2025.09.03 |
| [SWEA][Java] 3421. ์์ ๋ฒ๊ฑฐ ์ฅ์ธ (4) | 2025.08.29 |