olrlobt
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #12865 ํ๋ฒํ ๋ฐฐ๋ญ ๋ณธ๋ฌธ
๐ ๊ณจ๋5 - #12865 ํ๋ฒํ ๋ฐฐ๋ญ
๐ ํ ์คํธ์ผ์ด์ค ์ถ๊ฐ ํํธ
5 7
6 13
4 8
3 6
5 12
2 7
= 19
โ๏ธ ํ์ด๋ฒ
๋ํ์ ์ธ DP (๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ) ๋ฌธ์ ์ด๋ค.
DP ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ ๋, ๊ฐ์ฅ ๋จผ์ ๊ณ ๋ คํด์ผ ํ๋ ๊ฒ์
์บ์ฑ์ ํตํ ์ ํ์ ์์ฑ์ด๋ค.
๋จผ์ ๊ฐ์ ์ ์ฅํ DP ํ ์ด๋ธ ๋ง๋ ๋ค.
๊ฐ๋ก์ถ์ ๋ค ์ ์๋ ๋ฌด๊ฒ๋ฅผ ์๋ฏธํ๋ฉฐ,
์ธ๋ก์ถ์๋ ์ฐจ๋ก๋๋ก ๋ฌผ๊ฑด์ ๋ฌด๊ฒ์ ๊ฐ์น๋ฅผ ์ ๋ ฅํ๋ค.
๋จผ์ ์ฒซ๋ฒ์งธ ๋ฌผ๊ฑด์ธ, ๋ฌด๊ฒ 6์ ๊ฐ์น 13์ ๋ฌผ๊ฑด์ด ๋ค์ด๊ฐ๊ฒ ๋๋ฉด,
๋ฌด๊ฒ 6๊น์ง๋ ๋ค ์ ์์ผ๋ฏ๋ก DP (์บ์)์ 6๋ถํฐ ์ฑ์์ง๊ฒ ๋๋ค.
์ดํ, ๋๋ฒ์งธ ๋ฌผ๊ฑด์ธ ๋ฌด๊ฒ 4์ ๊ฐ์น 8์ ๋ฌผ๊ฑด์ด ๋ค์ด๊ฐ๊ฒ ๋๋ฉด,
๋ง์ฐฌ๊ฐ์ง๋ก ๋ฌด๊ฒ 4๊น์ง๋ ๋ค ์ ์์ผ๋ฏ๋ก ์ด ์ ๊ฐ์ธ 0์ ๊ฐ์ ธ์ค๊ฒ ๋๋ค.
์ดํ, 4๋ถํฐ๋ ๋ ๋ฒ์งธ ๋ฌผ๊ฑด์ ๋ค ์ ์์ผ๋ฏ๋ก 8์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
ํ์ง๋ง 6๋ถํฐ๋ ์ฒซ๋ฒ์งธ ๋ฌผ๊ฑด์ ๋๋ ๊ฒ ๊ฐ์น๊ฐ ๋ ๋๊ฐ๋ฏ๋ก,
์ด์ DP ๊ฐ์ธ 13์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์ธ๋ฒ์งธ ๋ฌผ๊ฑด์ธ ๋ฌด๊ฒ 3 ๊ฐ์น 6 ์ด ๋ค์ด๊ฐ์ ๋,
3์ผ ๋, 6
4,5,6 ์ผ ๋๋ ์ด์ DP์ ๊ฐ์ ๊ฐ์ ธ์ค๊ฒ ๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ 7์ผ ๋ ์ํฉ์ ๋ณด๋ฉด,
์ฒซ ๋ฒ์งธ ๋ฌผ๊ฑด์ธ 6์ ๋ค์์ ๋ 13์ ๊ฐ์น๋ฅผ ์ป์ ์ ์์ง๋ง,
๋ ๋ฒ์งธ์ ์ธ ๋ฒ์งธ๋ฅผ ๊ฐ์ด ๋ค์์ ๋ 6+8=14์ ๊ฐ์น๋ฅผ ์ป์ ์ ์๋ค.
๋ค์ ๋งํด, ์ธ ๋ฒ์งธ ๋ฌผ๊ฑด์ด ์ถ๊ฐ๋์์ ๋ 7์ ๋ฌด๊ฒ๋ฅผ ๋ค ์ ์๋ ๊ฒฝ์ฐ๋
์ด ์ ๊น์ง ๊ฒฝ์ฐ์์ 7์ ๋๋ ๊ฒฝ์ฐ ( ์ด ์ DP์ 7์ ๋๋ ๊ฒฝ์ฐ)์
์ด๋ฒ ๋ฌผ๊ฑด์ ํ์๋ก ๋ค๊ฒ ๋์์๋ 7์ ๋๋ ๊ฒฝ์ฐ ์ค ํฐ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๋๋ค.
์ด๋ฒ ๋ฌผ๊ฑด์ ํ์๋ก ๋ค๊ฒ ๋์์ ๋์ ๊ฒฝ์ฐ๋
์ด 7์ ๋ฌด๊ฒ์์ ์ด๋ฒ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ( = 3)๋ฅผ ๋บ 4์ ๋ฌด๊ฒ๋ฅผ ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ด ์ DP์์ ์ฐพ์ผ๋ฉด ๋๋ค.
๋ฐ๋ผ์, ์ด๋ฒ ๋ฌผ๊ฑด์ ๋ค์ง ์๋ ๊ฒฝ์ฐ 13๊ณผ์ด๋ฒ ๋ฌผ๊ฑด์ ํ์๋ก ๋๋ ๊ฒฝ์ฐ 6+8=14 ์ค
ํฐ ๊ฐ์ 14์ด๋ฏ๋ก 14๊ฐ ์ฑ์์ง๊ฒ ๋๋ค.
๋ค ๋ฒ์งธ ๋ฌผ๊ฑด๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฑ์ฐ๊ฒ ๋๋ฉด ์์ ๊ฐ์์ง๋ค.
๋ฐฑ์ค์์ ์ฃผ์ด์ง๋ ๋ค ๋ฒ์งธ ์์๊น์ง๋ก๋ ์ดํด๊ฐ ๋ ๋ ์ ์์ผ๋,
ํ ์คํธ์ผ์ด์ค ์ถ๊ฐ ํํธ์ ๋ค์ฏ ๋ฒ์งธ ์์(๋ฌด๊ฒ 2 ๊ฐ์น 7)๋ฅผ ์ถ๊ฐํ๋ค.
4๊น์ง๋ ์ฝ๊ฒ ์ฑ์ธ ์ ์์ ๊ฒ์ด๋ค.
๋ค์ 5์ ๊ฒฝ์ฐ๋ฅผ ๋ณด๋ฉด, ์ด ์ ๊น์ง 5์ ๋ฌด๊ฒ์์ ์ต๋ ๊ฐ์น๋ 12์๋ค.
ํ์ง๋ง, 5์ ๋ฌด๊ฒ์์ ๋ค์ฏ ๋ฒ์งธ ๋ฌผ๊ฑด์ ํ์๋ก ๋๋ ๊ฒฝ์ฐ๋
[(๋ค์ฏ ๋ฒ์งธ ๋ฌผ๊ฑด์ ๊ฐ์น) + { (๋ค ์ ์๋ ๋ฌด๊ฒ) - (๋ค์ฏ ๋ฒ์งธ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ)}์ ๊ฐ์น]์ ๊ฐ๋ค.
๋ ์ค, ํฐ ๊ฐ์ ์ฑ์์ฃผ๋ฉด ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก,
์ด ์ ๊น์ง 6 ๋ฌด๊ฒ์ ์ต๋ ๊ฐ์น๋ 13์ด๊ณ ,
ํ์ฌ ๋ฌผ๊ฑด ๋ฌด๊ฒ 2์ ๊ฐ์น๋ 7,
6 - 2 = 4 ์ด๋ฏ๋ก 4์ ๋ฌด๊ฒ๋ฅผ ๋๋ ์ต๋ ๊ฐ์น๋ 8์ด๋ค. 7+8= 15
๋ง์ฐฌ๊ฐ์ง๋ก,
์ด ์ ๊น์ง 7 ๋ฌด๊ฒ์ ์ต๋๊ฐ์น๋ 14,
ํ์ฌ ๋ฌผ๊ฑด 2์ ๊ฐ์น 7, 5์ ๊ฐ์น 12 ์ด๋ฏ๋ก, 7+12 = 19์ด๋ค.
์ด์ ์์ ๊ฒฝ์ฐ๋ก ์ ํ์์ ๋์ถํ๋ฉด ๋๋ค.
์ด ๊ฐ์น = ์ต๋๊ฐ { ์ด์ ๋ฌผ๊ฑด๊น์ง์ ๊ฐ์น, ํ์ฌ ๋ฌผ๊ฑด ๊ฐ์น + ( ์ด ๋ฌด๊ฒ - ํ์ฌ ๋ฌด๊ฒ)์ ๊ฐ์น }
dp [ i ][ j ] = Math.max ( dp [ i-1 ][ j ] , thing [ i ][ 1 ] + dp [ i - 1 ] [ j - thing[ i ][ 0 ] ] )
์์ ๊ฐ์ด ๋์ถํ ์๋ ์๊ณ ,
dp [ i ][ j ] = thing[ i ][ 1 ] + dp [ i - 1 ] [ j - thing[ i ][ 0 ] ]๋ก
๋จ, dp [ i - 1 ] [ j ] ๋ณด๋ค ํฌ๋ค๋ ์กฐ๊ฑด์ ๊ฑธ์ด์ค ์ ๋ ์๋ค.
์ ๋ฌธ์ ์ ๊ฒฝ์ฐ, 1์ฐจ์ ๋ฐฐ์ด๋ก ํ์ด๋, 2์ฐจ์ ๋ฐฐ์ด๋ก ํ์ด๋ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.
๋ค๋ง 1์ฐจ์ ๋ฐฐ์ด๋ก ํ๊ธฐ ์ํด์๋ ์ด ์ ๊ฐ์ ์ ์ฅํ๋ ์์ ๋ฐฐ์ด์ด ํ์ํ๋ค.
์๋ ์ฝ๋๋ ๋์ ํ์ด๋ก, ๋ฐฐ์ด๋ณด๋ค๋ List๋ฅผ ์ฐ๋ ๊ฒ์ ์ ํธํ๊ธฐ ๋๋ฌธ์ List๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์๋ค.
List ์ญ์ ์์ List์ธ newDp๋ฅผ ์ ์ธํด์ฃผ์ด ํด๊ฒฐํ์๋ค.
๐๏ธ JAVA ํ์ด
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class baekjoon12865 {
static List<Integer> dp = new ArrayList<>();
static List<int[]> things = new ArrayList<>();
static int K;
static int N;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
K = sc.nextInt();
for (int testCase = 0; testCase < N; testCase++) {
int W = sc.nextInt();
int V = sc.nextInt();
int[] P = {W, V};
things.add(P);
}
solve();
}
public static void solve() {
for (int i = 0; i < K + 1; i++) {
dp.add(0);
}
List<Integer> newDp = new ArrayList<>(dp);
for (int index = 0; index < N; index++) {
for (int i = things.get(index)[0]; i < K+1; i++) {
if (dp.get(i) < things.get(index)[1] + dp.get(i - things.get(index)[0])) {
newDp.set(i, things.get(index)[1] + dp.get(i - things.get(index)[0]));
}
}
dp = new ArrayList<>(newDp);
}
System.out.println(dp.get(K));
}
}
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA/๋ฐฑ์ค ๊ณจ๋5] #2294 ๋์ 2 (0) | 2023.01.11 |
---|---|
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #2293 ๋์ 1 (0) | 2023.01.10 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #1461 ๋์๊ด (1) | 2023.01.02 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #13164 ํ๋ณต ์ ์น์ (1) | 2023.01.01 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋3] #13904 ๊ณผ์ (0) | 2022.12.31 |