Tags
- ๋ฌธ์์ด
- BOJ
- Brute Force Algorithm
- BFS
- PGM
- ์๋ฎฌ๋ ์ด์
- Java
- LV2
- ์๋ฃ๊ตฌ์กฐ
- Study
- Python
- ์ ๋ ฌ
- ๋๋น ์ฐ์ ํ์
- queue
- Dynamic Programming
- DP
- ๋ฐฑํธ๋ํน
- ์ ์๋ก
- dfs
- ์ํ
- sort
- ๊ต์ฌ
- ๊ทธ๋ํ ํ์
- ๊ตฌํ
- SpringBoot
- CodingTest
- ๊น์ด ์ฐ์ ํ์
- stack
- ๊ทธ๋ํ ์ด๋ก
- greedy
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2293 : ๋์ 1 ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n๊ฐ์ง ๋์ ์ผ๋ก k์์ ๋ง๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
- ๋์ ์ ๋ฌดํ์ผ๋ก ์ธ ์ ์์ผ๋ฉด ์ ํ์ ์ธ DP๋ฌธ์ ๋ก, dp[i] ๋ i์์ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ์์ด๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// Input
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());
int[] coins = new int[n];
for (int i = 0; i < n; i++) {
coins[i] = Integer.parseInt(br.readLine());
}
// DP
int[] dp = new int[k+1];
dp[0] = 1;
for (int i = 0; i < n; i++) {
for (int j = coins[i]; j <= k; j++) {
dp[j] += dp[j-coins[i]];
}
}
// Output
System.out.print(dp[k]);
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- dp๋ dp[i]๋ i์์ ๋ง๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด์ด๋ค.
- dp[0]์ ์๋ฌด ๋์ ๋ ์๋ด๋ ๊ฒฝ์ฐ(๊ณต์งํฉ)๊ฐ ์์ผ๋ฏ๋ก 1์ด๋ค.
- ์ฌ์ค n์ ์ต์๊ฐ์ด 1์ด๊ธฐ ๋๋ฌธ์ ๋ต์ผ๋ก ์ฐ์ด์ง ์์ง๋ง, ์ ํ์ ์ฐธ์กฐ์ ํ์ํด์ 1์ ๋ฃ์ด์ผ ํ๋ค.
- n๊ฐ์ง ์ฝ์ธ์ผ๋ก ๋ง๋ค ์ ์๋ ์๋ 0์ ์ ์ธํ๊ณ ์ต์ coins[0]์ด๋ฏ๋ก, coins[i] ~ k ๊น์ง ๊ฐ์ ๋์ ํ๋ค.
- ํด๋น ๋์ ์ ๋บ์ ๋์ ์ต์ ๊ฐ์ ํ์ฌ ๊ฐ์ ๋ํ๋ค.
๐ธ end ๐ธ
- ์ ํ์์ ๋ง๋ค๊ธฐ ์ด๋ ค์์ ๊ณ ๋ฏผํ๋ค ์ ํ์๋ง ์ฐธ๊ณ ํ๊ณ ํ์๋ค.
- DP์ ์ ํ์ ์ถ์ถ์ ๋ ์ฐ์ตํด์ผ ํ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.2 : ๋ฌธ์์ด ๋๋๊ธฐ (0) | 2023.04.17 |
---|---|
Lv.1 : ๋ช ์์ ์ ๋น (1) (0) | 2023.04.14 |
Lv.1 : ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ (0) | 2023.04.12 |
Lv.1 : ๊ณผ์ผ ์ฅ์ (0) | 2023.04.12 |
Lv.1 : ํธ๋ ํ์ดํธ ๋ํ (0) | 2023.04.12 |