Tags
- ์ํ
- ์ ๋ ฌ
- ์๋ฃ๊ตฌ์กฐ
- ๊ต์ฌ
- SpringBoot
- queue
- BFS
- stack
- LV2
- ๊ทธ๋ํ ํ์
- ๊น์ด ์ฐ์ ํ์
- CodingTest
- ๋ฐฑํธ๋ํน
- ๋ฌธ์์ด
- ๊ทธ๋ํ ์ด๋ก
- ์๋ฎฌ๋ ์ด์
- dfs
- Brute Force Algorithm
- Python
- Dynamic Programming
- ๊ตฌํ
- ์ ์๋ก
- sort
- greedy
- Java
- DP
- Study
- ๋๋น ์ฐ์ ํ์
- BOJ
- PGM
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_12865 : ํ๋ฒํ ๋ฐฐ๋ญ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ๊ฐ์น์ ์ด ํฉ์ด ์ต๋๊ฐ ๋๋๋ก ๋ฐฐ๋ญ์ ๋ฌผ๊ฑด์ ๋ด๊ณ , ๊ทธ ๊ฐ์ ์ถ๋ ฅํ๋ค.
- ์ ํ์ ์ธ dp๋ฌธ์ ์ด๋ค.
- ๊ฐ๋ฐฉ์ ๋ฌด๊ฒ ์ ํ์ 0๋ถํฐ k๊น์ง ๋๋ ค๊ฐ๋ฉฐ ์ต์ ๊ฐ์ ๋์ ํด ๊ฐ๋ค.
- ํ ๋ฌผ๊ฑด์ ๋ํด, ๋ฃ์์๋์ ์๋ฃ์์๋ ์ด๋ ๊ฐ์ด ๋ ์ต์ ์ธ์ง ๋น๊ตํด ๊ฐ๋ฉฐ ๋์ ํด ๊ฐ๋ค.
- ๋ฌด๊ฒ ์ ํ์ด k์ด๋ฉด์ ๋ชจ๋ ๋ฌผ๊ฑด์ด ๊ณ ๋ ค๋ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- dp๋ฅผ 2์ฐจ์ ๋ฐฐ์ด๋ก ๊ตฌํํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
Obj[] objs = new Obj[n+1];
for (int i = 1; i <= n; i++) {
st = new StringTokenizer(br.readLine());
objs[i] = new Obj(Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken()));
}
int[][] dp = new int[n+1][k+1];
for (int i = 1; i <= n; i++) { // ๋ฌผ๊ฑด ์ํ
for (int j = 1; j <= k; j++) { // ๋ฐฐ๋ญ ์ ํ ๋ฌด๊ฒ ์ํ
if (objs[i].w <= j) { // ํ์ฌ ๋ฌผ๊ฑด ๋ฃ์ ์ ์์
dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-objs[i].w]+objs[i].v); // ๋ฃ์์ ๋์ ๋ฃ์ง ์์์๋ ๋น๊ต
}
else { // ํ์ฌ ๋ฌผ๊ฑด ๋ฃ์ ์ ์์ด์ ์ด์ ์ต์ ๊ฐ
dp[i][j] = dp[i-1][j];
}
}
}
System.out.println(dp[n][k]);
}
private static class Obj{
int w, v;
public Obj(int w, int v) {
this.w = w;
this.v = v;
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๋ฌผ๊ฑด๋ค์ ํ๋์ฉ ๊ณ ๋ คํด๋ณธ๋ค.
- ๋ฐฐ๋ญ ๋ฌด๊ฒ ์ ํ์ 1๋ถํฐ k๊น์ง ๋๋ฆฌ๋ฉฐ dp๋ฐฐ์ด์ ์ฑ์๊ฐ๋ค.
- ๋ฌผ๊ฑด์ ์๋ ๋ฐฐ๋ญ ๋ฌด๊ฒ ์ ํ์ด 0์ด๋ฉด dp๋ฐฐ์ด์ ๊ฐ์ 0์ด๋ค.
- ๋ง์ฝ ์ ํ ๋ฌด๊ฒ๋ณด๋ค ๋ฌผ๊ฑด์ ๋ฌด๊ฒ๊ฐ ์๋ค๋ฉด(ํด๋น ๋ฌผ๊ฑด์ ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์๋ค๋ฉด),
๋ฌผ๊ฑด์ ๋ฃ์์๋์ ๋ฃ์ง ์์์ ๋๋ฅผ ๋น๊ตํด์ ๋ ํฐ ๊ฐ์ ์ ์ฅํ๋ค.- ๋ฌผ๊ฑด์ ๋ฃ์ง ์์์ ๋์ ์ต์ ๊ฐ์ ์ง์ ๋ฌผ๊ฑด์ ๊ฐ์ ๋ฐฐ๋ญ ๋ฌด๊ฒ ์ ํ์ ๊ฐ์ด๋ฏ๋ก dp[i-1][j]์ด๋ค.
- ๋ฌผ๊ฑด์ ๋ฃ์์๋์ ์ต์ ๊ฐ์, ๋ฌผ๊ฑด์ ๋ฃ๊ณ ๋ฌด๊ฒ ์ ํ ๋จ์ ๋ถ๋ถ์ ์ต์ ๊ฐ์ ๋ฃ์ ์ํ์ด๋ค.
(๋ฌผ๊ฑด์ ๋ฃ์ : objs[[i].v , ๋จ์ ๊ณต๊ฐ์ ์ต์ ๊ฐ : dp[i-1][ j - ojbs[i].w] )
- ํ์ฌ ๋ฌผ๊ฑด์ ๋ฃ์ ์ ์์ผ๋ฉด, ์ง์ ๋ฌผ๊ฑด์ ์ต์ ๊ฐ์ ๊ทธ๋๋ก ์ ๋๋ค. ( dp[i-1][j] )
- ๊ฐ์ ๋ฐฐ๋ญ ๋ฌด๊ฒ ์ ํ์์ ๋ชจ๋ ๋ฌผ๊ฑด์ด ๊ณ ๋ ค๋ ์ต์ ๊ฐ์ธ dp[n][k]๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- 2์ฐจ์ dp๋ฅผ ๊ทธ๋ฆผ์ ๊ทธ๋ ค์ ๋ง์ด ํ์ดํ๋ ๊ฒ ๊ฐ๋ค.
- ์ ํ์ ์ธ ์ ๋ช ํ dp๋ฌธ์ ๋ผ๋๋ฐ, ์์ฒญ ์ ์ ํ ์ถฉ๊ฒฉ์ ๋ฐ์๋ค. (์ด๋ป๊ฒ ์ด๋ฐ ํ์ด๋ฅผ)
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_4963 : ์ฌ์ ๊ฐ์ (0) | 2023.02.21 |
---|---|
BOJ_17281 : โพ (0) | 2023.02.20 |
BOJ_14888 : ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2023.02.20 |
BOJ_19621 : ํ์์ค ๋ฐฐ์ 2 (0) | 2023.02.20 |
BOJ_1697 : ์จ๋ฐ๊ผญ์ง (0) | 2023.02.12 |