๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/14501)
< ํด์ฌ >
๋ฌธ์ ํ์ด
dp๋ฅผ ํ์ฉํ์ฌ ์ป์ ์ ์๋ ์ต๋ ์ด์ต์ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _14501_ { // ํด์ฌ
static class Pair {
int t, p;
public Pair(int t, int p) {
this.t = t;
this.p = p;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
Pair arr[] = new Pair[n + 1];
int dp[] = new int[n + 2];
for (int i = 1; i < n + 1; i++) {
st = new StringTokenizer(bf.readLine());
arr[i] = new Pair(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
/* ex1)
for (int i = 1; i < n + 1; i++) {
if (i + arr[i].t < n + 2) {
dp[i] = arr[i].p;
}
}
for (int i = 2; i < n + 1; i++) {
for (int j = 1; j < i; j++) {
if (j + arr[j].t <= i && i + arr[i].t < n + 2)
dp[i] = Math.max(dp[i], dp[j] + arr[i].p);
}
}
*/
for (int i = 1; i < n + 1; i++) {
dp[i] = Math.max(dp[i], dp[i - 1]);
if (i + arr[i].t < n + 2) {
dp[i + arr[i].t] = Math.max(dp[i + arr[i].t], dp[i] + arr[i].p);
}
}
int result = 0;
for (int i = 1; i < n + 2; i++) {
result = Math.max(result, dp[i]);
}
System.out.println(result);
}
๋ณ์)
n : ์ผ
arr : ์๋ด ์ผ์ ํ
dp : ์ป์ ์ ์๋ ์ด์ต
result : ์ป์ ์ ์๋ ์ต๋ ์ด์ต
์ผ์ ์ ๋ ฅ๋ฐ๋๋ค. ์ผ๋งํผ ์๋ด ์ผ์ ์ ์ ๋ ฅ๋ฐ์ arr์ ์ ์ฅํ๋ค.
์ฒ์์๋ dp๋ฅผ ๊ฐ ์๋ด์ผ์ ์ป์ ์ ์๋ ์ด์ต์ผ๋ก ์ด๊ธฐํํ๊ณ ์ด์ค ํ์์ ํตํด ์ด์ ๋ ์ง์์ ํ์ฌ ๋ ์ง์ ์๋ดํ ์ ์๊ณ , ํ์ฌ ๋ ์ง์์ ํด์ฌ์ผ๊น์ง ์๋ด ๊ฐ๋ฅํ์ง ํ์ธ ํ dp๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ค. ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ ์กฐ๊ธ ํท๊ฐ๋ ค ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐพ์๋ดค๋ค.
ํ๋ฃจ์ฉ ์ดํด๋ณด๋ฉฐ ๋จผ์ ์ด์ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ์ต๋๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค. ๊ทธ๋ค์ ์ค๋ ์๋ด์ด ๊ฐ๋ฅํ๋ค๋ฉด ์๋ด์ด ๋๋๋ ๋ ์ ๊ฐ์ ์ ๋ฐ์ดํธํ๋ค. ์ต์ข dp๋ฅผ ์ดํด๋ณด๋ฉฐ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 4097_์์ต (0) | 2026.01.30 |
|---|---|
| [Baekjoon] 18353_๋ณ์ฌ ๋ฐฐ์นํ๊ธฐ (0) | 2026.01.29 |
| [Baekjoon] 6221_The Bale Tower (1) | 2026.01.26 |
| [Baekjoon] 10571_๋ค์ด์๋ชฌ๋ (0) | 2026.01.23 |
| [Baekjoon] 14231_๋ฐ์ค ํฌ์ฅ (0) | 2026.01.22 |