์ฐธ๊ณ : 10์ฃผ์์ฑ C++ ์ฝ๋ฉํ ์คํธ | ์๊ณ ๋ฆฌ์ฆ ์ฝ๋ฉํ ์คํธ

๋์ n๊ฐ์ง๋ฅผ ๋ฌดํํ ์ธ ์ ์๋ค? == dp๋ฅผ ์ผ์ชฝ๋ถํฐ ๋์
๋์ n๊ฐ์ง๋ฅผ 1๊ฐ๋ง ์ธ ์ ์๋ค? == dp๋ฅผ ์ค๋ฅธ์ชฝ๋ถํฐ ๋์ .
0 1 2 3 4 5 6 7 8
1์์ผ๋ก ์๋ค๋ค์ ๋ง๋ ๋ค.
1 2 3 4 5 6 7 8๊ฐ๊ฐ ํ์.
2์์ผ๋ก ๋ง๋ ๋ค.
ํ ์ด๋ธ๋ก ํํํ์.
dp | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
1์ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
2์ | 0 | 1 | 1 | 2 | ... |
๋นจ๊ฐ ๊ธ์จ๋ถํฐ ๊ฐฑ์ ์ด ๋๋ ๋ถ๋ถ์ด๋ค. ์ฆ, ์ ํ์์ด min(dp[i], dp[i-2] + 1);์ด๋ค.
๋ฒ์ธ) n๊ฐ์ง๋ฅผ 1๊ฐ๋ง ์ธ ์ ์๋ค๋ฉด?
for (int i = 0; i < n; i++) {
int tmp = Integer.parseInt(br.readLine());
for (int j = k; j >= tmp; j--) {
dp[j] = Math.min(dp[j], dp[j - tmp] + 1);
}
}
1, 2, 5๋ก 5์์ ๋ง๋ ๋ค๊ณ ํ๋ฉด ํ ์ด๋ธ์ด ๋ค์์ฒ๋ผ ์ด๋ฃจ์ด์ง๋ค.
dp | 0 | 1 | 2 | 3 | 4 | 5 |
1์ | 0 | 1 | inf | inf | inf | inf |
2์ | 0 | 1 | 1 | 2 | inf | inf |
5์ | 0 | 1 | 1 | 2 | inf | 1 |
ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๋ฉด ๋ชจ๋ 1๊ฐ๋ง ์ฌ์ฉํด์ k์์ ๋ง๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ๊ทผ๋ฐ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๋ฉด ์ด๋ ๊ฒ ๋์ค๋๊ฑด ์๊ฒ ๋๋ฐ, ์ ์ด๋ ๊ฒ ๋๋๊ฑด์ง๋ ์์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1513 ๋ฌธ์ ์์ ์ 4์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํด์ผ ํ๋? (0) | 2024.09.25 |
---|---|
2293 - ๋์ 1 (0) | 2024.09.23 |
2240 - ์๋๋๋ฌด (0) | 2024.09.20 |
2098 - ์ธํ์ ์ํ (2) | 2024.09.17 |
2565 - ์ ๊น์ค (0) | 2024.09.12 |