[๋ฐฑ์ค] ๐ฅ 15486 ํด์ฌ 2
๐ ๋์ด๋
๐ฅ Gold 5
๐ ๋ฌธ์
https://www.acmicpc.net/problem/15486
๐ ํ์ด
์ด์ DP๋ฌธ์ ์ ์์ฒญ ๊ณ ๋ฏผ์ ํ๊ณ , DP ๋ฌธ์ ๊ฐ ์ด๋ค ํ์์ธ์ง ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผ์ ํด์ผ ํ๋์ง, ๊นจ๋ฌ์์ ์ป์ด์ ๊ทธ๋ฐ๊ฐ, ๊ณจ๋๋ฌธ์ ์์๋ ๋ถ๊ตฌํ๊ณ ๋งค์ฐ ์ฝ๊ฒ ํ๋ ธ๋ค.
์ผ๋จ ๋ ์ง์ ๋์ arr์ ์ง์ด๋ฃ์๊ณ , dp๋ 0์ผ๋ก ์ ๋ถ ์ด๊ธฐํ ํด์ฃผ์๋ค.
for๋ฌธ์ผ๋ก ์ฒ์๋ถํฐ ๋๊น์ง ๋๋ฆฐ๋ค๊ณ ํ์, ์ด๋ n๋ฒ์งธ์ผ๋, dp[n]์ ์ง๊ธ๊น์ง ๋ค์ด์จ dp๊ฐ(์ดํ ์ค๋ช
)๊ณผ ์ด์ ๊ฐ์ ๋น๊ตํ์ฌ, ๋ ํฐ ๊ฐ์ ๋ฃ๋๋ค.
์ดํ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ธ๋ฐ, arr[n][0]
(์๋ด์ ๊ฑธ๋ฆฌ๋ ์๊ฐ) + ํ์ฌ Index
์ ์ฃผ์๊ฐ์ ์๋ dp
๊ฐ์ ํ์ฌ dp[n]
+ arr[n][1]
๋ฅผ Math.max
๋ก ๋ ํฐ ๊ฐ์ผ๋ก ์ด๊ธฐํ ํด์ค๋ค.
์ด๋ฐ์์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋ฉด ๊ฒฐ๊ตญ ๊ฐ dp
์ ์๋ ๊ฐ์ ํญ์ ์ต๋๊ฐ์ด ๋๋ค.
DP ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋๋์ ์ ์ด๋ป๊ฒ ํด์ผ์ง dp์ ์๋ ๊ฐ์ด ํญ์ ๊ทธ ์ง์ ์ ์ต๋๊ฐ/์ต์๊ฐ์ด ๋ ์ ์๋์ง์ ๋ํด ๊ณ ๋ฏผํ๊ณ , ๊ทธ์ ๋ํ ์ ํ์์ ์ฐพ์๋ด๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒ์ ๋๊ผ๋ค.
๋ฌธ์ ๋ฅผ ํ๋ฉด ํ์๋ก ์ค๋ ฅ์ด ํํ ๋๋ ๋๋์ด๋ผ ์์ฆ ๊ณต๋ถํ๋ ๋ง์ด ๋๋ค. ๐
๐ Code
package DP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
public class N15486 {
public static int[][] arr;
public static int[] dp;
static int target;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
target = Integer.parseInt(br.readLine());
arr = new int[target + 2][2];
dp = new int[target + 2];
Arrays.fill(dp, 0);
StringTokenizer st;
arr[0][0] = 0;
arr[0][1] = 0;
for (int i = 1; i < target + 1; i++) {
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
for (int i = 1; i < target + 2; i++) {
MakeDP(i);
}
System.out.println(dp[target + 1]);
}
public static void MakeDP(int index) {
dp[index] = Math.max(dp[index], dp[index - 1]);
if (index + arr[index][0] <= target + 1) {
dp[index + arr[index][0]] = Math.max(arr[index][1] + dp[index], dp[index + arr[index][0]]);
}
}
}
package (์ด๋ฆ); ๋ฅผ ๋๊ณ , class ์ด๋ฆ์ Main
์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
๊ฐ์ธ ๊ณต๋ถ ๊ธฐ๋ก์ฉ ๋ธ๋ก๊ทธ์
๋๋ค.
ํ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ณดํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.๐