๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ธ์ ์ฌ์ฉํ ๊น?
๋ฐฑ์ค์ ๋ํ์ ์ธ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์
11047 - ๋์ 0
๋ฌธ์
์ค๊ท๊ฐ ๊ฐ์ง๊ณ ์๋ ๋์ ์ ์ด N์ข ๋ฅ์ด๊ณ , ๊ฐ๊ฐ์ ๋์ ์ ๋งค์ฐ ๋ง์ด ๊ฐ์ง๊ณ ์๋ค.
๋์ ์ ์ ์ ํ ์ฌ์ฉํด์ ๊ทธ ๊ฐ์น์ ํฉ์ K๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ด๋ ํ์ํ ๋์ ๊ฐ์์ ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋์ ์ ๊ฐ์น Ai๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2์ธ ๊ฒฝ์ฐ์ Ai๋ Ai-1์ ๋ฐฐ์)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ K์์ ๋ง๋๋๋ฐ ํ์ํ ๋์ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
โ 1. ํด๋น ๋ฌธ์ (11047 - ๋์ 0)๊ฐ ๊ทธ๋ฆฌ๋๋ก ์ต์ ํด๋ฅผ ๋ณด์ฅํ๋ ์ด์
๐ธ ๋ฌธ์ ์์ฝ:
- ์ฃผ์ด์ง ๋์ ์ข ๋ฅ A1, A2, ..., AN (์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋จ)
- ๊ฐ ๋์ ์ ๋ฌดํํ ์กด์ฌ
- ๋ชฉํ ๊ธ์ก K๋ฅผ ๊ฐ์ฅ ์ ์ ๋์ ๊ฐ์๋ก ๋ง๋ค๊ธฐ
๐ธ ํต์ฌ ์กฐ๊ฑด:
- ๋์ ๋จ์๊ฐ ๋ฐฐ์ ๊ด๊ณ์
- ์ฆ, ์ด๋ค ๋์ ๋จ์๋ ํญ์ ๋ ํฐ ๋์ ์ ๋ฐฐ์ (์: 1, 5, 10, 50, 100, 500)
๐ธ ๊ทธ๋ฆฌ๋๊ฐ ์ต์ ํด๋ฅผ ๋ณด์ฅํ๋ ์ด์ :
- ํฐ ๋์ ๋ถํฐ ์ต๋ํ ์ฌ์ฉํ๋ ๊ฒ์ด ํญ์ ์ต์ ์
- ์์ ๋์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ฐ๋ ๊ฒ๋ณด๋ค, ํฐ ๋์ ํ๋๋ฅผ ์ฐ๋ ๊ฒ ํจ์จ์ ์
- ์ด ์ฑ์ง์ด ์ฑ๋ฆฝํ๋ ์ด์ ๋:
- "๋์ ๋จ์๊ฐ ๋ฐฐ์ ๊ด๊ณ๋ฅผ ๋ง์กฑํ๋ฉด greedy choice property๊ฐ ๋ณด์ฅ๋จ"
โ
์ด๊ฑธ Greedy Choice Property๋ผ๊ณ ํด.
(ํ์ฌ ๋จ๊ณ์์ ๊ฐ์ฅ ์ต์ ์ ์ ํ์ด ์ ์ฒด์ ์ผ๋ก๋ ์ต์ ์ด๋ผ๋ ์ฑ์ง)
โ 2. ์ด ๋ฌธ์ ๊ฐ ์ '๊ทธ๋ฆฌ๋ ๋ฌธ์ '์ธ์ง ํ๋จํ๋ ๊ธฐ์ค
๐ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๊ทธ๋ฆฌ๋์ธ์ง ์ ์ถํ๋ 3๊ฐ์ง ํํธ:
์ต์ ํ(์ต์/์ต๋) | "๊ฐ์ฅ ์ ์ ์์ ๋์ ", "๊ฐ์ฅ ํฐ ์์ต", "์ต์ ์๊ฐ" ๊ฐ์ ํค์๋ |
๊ตญ์ ์ต์ ์ด ์ ์ฒด ์ต์ ์ด ๋๋ ๊ตฌ์กฐ | ์ด๋ค ์ ํ์ด ๋ค๋ฅธ ์ ํ์ ์ํฅ์ ๋ ์ฃผ๊ฑฐ๋, ์ํฅ์ด ๋ ๋ฆฝ์ ์ผ ๋ |
์์ฐจ์ , ์ ํ์ ๊ตฌ์ฑ | ๋งค ์๊ฐ ํ๋์ฉ ์ ํํด์ ๋์ ํด๊ฐ๋ ๋ฐฉ์ (ex. ์ ํ/๊ฑฐ์ /๋์ฒด) |
์์๋ก ์ ์ฉ:
- "๋์ ๊ฐ์๋ฅผ ์ต์๋ก" → ์ต์ ํ ๋ฌธ์
- "ํฐ ๋์ ๋ถํฐ ์ต๋ํ ์ด๋ค" → ์ง๊ธ ์ต์ ์ด ์ ์ฒด์์๋ ์ต์
- "๋์ ํ๋์ฉ ์ ํํด๊ฐ๋ค" → ์์ฐจ์ ๊ตฌ์กฐ
โ ์ด๋ฐ ์์๋ค์ด ์๋ค๋ฉด ๊ทธ๋ฆฌ๋์ผ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์
โ 3. ๋ค๋ฅธ ์ ํ์ ๊ทธ๋ฆฌ๋ ๋ฌธ์ ์์๋ ์ด๋ป๊ฒ ์ ์ถํ ๊น?
๐ ์ฃผ์ ๊ทธ๋ฆฌ๋ ์ ํ๊ณผ ํน์ง
์ ํ | ์์ | ์์ด๋์ด |
๋์ /์์ ์ต์ํ | ๋์ 0, ๊ฑฐ์ค๋ฆ๋ | ํฐ ๋จ์๋ถํฐ ์ต๋ ์ฌ์ฉ |
ํ๋ ์ ํ ๋ฌธ์ | ํ์์ค ๋ฐฐ์ , ๊ฐ์์ค ๋ฐฐ์ | ๋นจ๋ฆฌ ๋๋๋ ์์๋๋ก ์ ํ |
์ ๋ ฌ ํ ์ ํ | ๋ฐฐ๋ญ ๋ฌธ์ (1์ฐจ์) | ๊ฐ์น/๋ฌด๊ฒ ๋น์จ ๊ธฐ์ค |
์ฐ์ ์์ ํ | ์ต์ ํ, ์์ ์ค์ผ์ค | ํ์ฌ ๊ฐ์ฅ ์์/ํฐ ๊ฐ ์ฐ์ ์ฒ๋ฆฌ |
์ค์ผ์ค๋ง/์ค์ํ | CPU ์ค์ผ์ค๋ง, ๊ณตํญ ๋ฌธ์ | ์ ํ ์๊ฐ ๋์ ์ต์ ์ ํ ์ ์ง |
- ๋ฌธ์ ์์ "ํ ๋ฒ ๊ฒฐ์ ํ๋ฉด ๋๋๋ฆด ์ ์๋ค" → ๊ทธ๋ฆฌ๋ ๊ฐ๋ฅ์ฑ ↑
- ๋งค ์๊ฐ ๊ฐ์ฅ ์ข์ ์ ํ์ ๊ณ ๋ฅด๋ฉด ์ ๋ต์ผ๊น? ๋ผ๋ ์ง๋ฌธ์ ๋์ ธ๋ณด์
- ์ ํ์ ๊ฒฐ๊ณผ๊ฐ ๋ค์ ์ ํ์ ํฐ ์ํฅ์ ์ฃผ์ง ์๋๊ฐ? → ๊ทธ๋ฆฌ๋ ๊ฐ๋ฅ์ฑ ↑
- ๋ค๋ฅด๊ฒ ์ ํํ๋ค๊ณ ํด๋ ์ ์ฒด ๊ฒฐ๊ณผ๋ ๋น์ทํ๊ฐ? → ๊ทธ๋ฆฌ๋ ๊ฐ๋ฅ์ฑ ↑
โ ๊ฒฐ๋ก ์์ฝ
ํญ๋ชฉ | ์ค๋ช |
์ด ๋ฌธ์ ๋ ์ ๊ทธ๋ฆฌ๋์ธ๊ฐ? | ๋์ ๋จ์๊ฐ ๋ฐฐ์ ๊ด๊ณ๋ผ, ํฐ ๋จ์๋ถํฐ ์ฐ๋ ๊ฒ ํญ์ ์ต์ |
๊ทธ๋ฆฌ๋๊ฐ ์ต์ ํด ๋ณด์ฅ ์ด์ | Greedy Choice Property + Optimal Substructure ์ฑ๋ฆฝ |
๋ค๋ฅธ ๋ฌธ์ ์์ ์ ์ถ ๋ฐฉ๋ฒ | ์ต์ ํ + ์์ฐจ ์ ํ + ์ ํ์ด ๋ค์์ ํฐ ์ํฅ์ ์ ์ค๋ค๋ฉด ๊ทธ๋ฆฌ๋ ๊ฐ๋ฅ์ฑ ↑ |
๊ทธ๋ฆฌ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ์ง ์์์ผํ ๊ฒฝ์ฐ๋?
โ 1. ๊ทธ๋ฆฌ๋ ์ ํ์ด ์ ์ฒด ์ต์ ํด๋ฅผ ๋ณด์ฅํ์ง ์๋ ๊ฒฝ์ฐ
โ [๋ฐ๋ก๊ฐ ์กด์ฌ]ํ๋ ์ ํ
๐น ์์ 1: ๋ฐฐ๋ญ ๋ฌธ์ (Knapsack Problem) - 0/1 Knapsack
- ๋ฌธ์ ์์ฝ: ๋ฌด๊ฒ ์ ํ์ด ์๋ ๋ฐฐ๋ญ์ ๋ฌผ๊ฑด์ ๋ฃ์ ๋, ์ต๋ ๊ฐ์น๋ฅผ ์ป๋๋ก ๋ฌผ๊ฑด์ ์ ํ
- ๊ทธ๋ฆฌ๋ ์ ๋ต ์ค๋ต ์์: ๊ฐ์น/๋ฌด๊ฒ ๋น์จ์ด ๋์ ๊ฒ๋ถํฐ ๋ฃ๊ธฐ
- ์ค์ ์ ๋ต: DP (๋ถ๋ถ์งํฉ ์กฐํฉ ๊ณ ๋ คํด์ผ ํจ)
- ์ ํ๋ฆผ?
- ์ด๋ค ๋ฌผ๊ฑด์ ํ ๋ฒ ๋ฃ์ผ๋ฉด, ์ดํ ์ ํ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ
- ์ ์ฒด ์กฐํฉ ์ค ์ต์ ํด๊ฐ ์์ ์ ์์
โ 2. ๊ตญ์ ์ต์ ์ด ์ ์ฒด ์ต์ ์ด ์๋ ๊ฒฝ์ฐ
๐น ์์ 2: ๋ฌธ์์ด ์์ถ/๋ณํ ๋ฌธ์
- ์ด๋ค ๋ณํ ๊ณผ์ ์์ ํ์ฌ ๋ฌธ์์ด์ ์งง๊ฒ ๋ง๋๋ ๊ฒ์ด,
์ดํ ์ ์ฒด ๋ฌธ์์ด์ ๋ ๊ธธ๊ฒ ๋ง๋ค ์๋ ์์
โ ์ด๋ด ๋ BFS, DFS ๋๋ DP๊ฐ ์ ํฉ
โ 3. ๋ค์ ์ ํ์ ์ํฅ์ ์ฃผ๋ ๊ตฌ์กฐ
๐น ์์ 3: ATM ์ธ์ถ ์๊ฐ (๋ฐฑ์ค 11399)
- ๊ฐ ์ฌ๋์ด ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋ค๋ฅผ ๋, ์ค์ ์ด๋ป๊ฒ ์ธ์์ผ ์ ์ฒด ๋๊ธฐ ์๊ฐ์ด ์ต์?
- ์ ๋ต ์ ๋ต: ์ธ์ถ ์๊ฐ์ด ์ ์ ์์๋๋ก ์ ๋ ฌ → ๊ทธ๋ฆฌ๋
- ๊ทธ๋ฐ๋ฐ ๋ง์ฝ "๋๊ตฐ๊ฐ๋ฅผ ๋จผ์ ๋ณด๋ด๋ ๋ฐ ํ๋ํฐ๊ฐ ์๋ค๋ฉด", ๊ทธ๋ฆฌ๋๊ฐ ๊นจ์ง
โ 4. ํ์์ ์ ํ์ด ๋๋๋ฆด ์ ์๋ ๊ตฌ์กฐ
๐น ์์ 4: ์ต์ ์คํจ๋ ํธ๋ฆฌ - ํฌ๋ฃจ์ค์นผ vs ํ๋ฆผ
- ํฌ๋ฃจ์ค์นผ์ ๊ทธ๋ฆฌ๋์ง๋ง, ์ฌ์ดํด์ ํผํด์ผ ํ๋ฏ๋ก ํญ์ ๊ฐ๋ฅํ ๊ฐ์ ์ ์ ํํ ์ ์์ → ์ ๋์จ ํ์ธ๋ ํ์
โ ๊ทธ๋ฆฌ๋ ์ค๋ต ํจํด ์์ฝ
์ค๋ต ์ ํ | ์ค๋ช | ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ |
์ ์ฒด ์กฐํฉ ๊ณ ๋ ค ํ์ | ์กฐํฉ์ด ๋ฌ๋ผ์ง๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ๋ฌธ์ | DP, ์์ ํ์ |
์ ํ์ด ๋ฏธ๋์ ์ํฅ ์ค | ํ ๋ฒ์ ์ ํ์ด ์ดํ ์ํฉ ์ ํ | DFS, BFS |
๊ฐ์ค์น/์กฐ๊ฑด ๋ณํ | ์ ํ ๊ธฐ์ค์ด ์ํฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง | ์ฐ์ ์์ํ, DP |
๋๋๋ฆด ์ ์์ | ๊ตญ์ ์ต์ ์ด ์ ์ฒด ์ต์ ์๋ | ๋ฐฑํธ๋ํน |
โ ์ ๋ฆฌ: ๊ทธ๋ฆฌ๋ ์ฌ์ฉ ์ ์ฒดํฌ๋ฆฌ์คํธ
- ์ ํ์ด ๋ค์ ์ ํ์ ์ํฅ์ ์ฃผ๋๊ฐ? → ์ํฅ ํฌ๋ฉด โ
- ์ง๊ธ์ ์ต์ ์ด ์ ์ฒด์์ ํญ์ ์ต์ ์ธ๊ฐ? → ์๋๋ฉด โ
- ๋ฌธ์ ์์ "์ต์ ํด"๋ฅผ ๊ตฌํ๋ผ๊ณ ํ ๋, ์กฐํฉ์ ๊ณ ๋ คํด์ผ ํ ๊ฐ๋ฅ์ฑ์? → ๊ทธ๋ฌ๋ฉด DP๋ ํ์ ํ์
- ๋ฌธ์ ์์ ์ ๋ ฅ ์กฐ๊ฑด์ด ๋ค์ํ๊ฒ ๊ผฌ์ฌ ์๋๊ฐ? → ๊ทธ๋ฆฌ๋ ๋จ๋ ์ผ๋ก ์ํ
'Programming > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ชจ๋๋ฌ ์ ๊ณฑ๊ทผ (0) | 2025.05.01 |
---|---|
[Java] ์๋ฐ์ ์ด์ง ์ฐ์ฐ(๋นํธ ์ฐ์ฐ) (0) | 2025.04.06 |
[Java] Softeer Level 2- "GPT์ ์ซ์ ๋น๊ต" ์๋ฐ ํ์ด (0) | 2025.04.06 |
[Kotlin] ๋ฐฑ์ค 2504 ๊ดํธ์ ๊ฐ ์ฝํ๋ฆฐ ํ์ด - stack (0) | 2025.03.31 |
[Kotlin] ๋ฐฑ์ค 14888 - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ(์ฌ๊ท์์ ํ์ DFS, ๋ฐฑํธ๋ํน) (1) | 2025.03.09 |