๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Algorithm

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ? (๋ฐฑ์ค€)

728x90
๋ฐ˜์‘ํ˜•
๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

 

๋ฐฑ์ค€์˜ ๋Œ€ํ‘œ์ ์ธ ๊ทธ๋ฆฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ

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
๋˜๋Œ๋ฆด ์ˆ˜ ์—†์Œ ๊ตญ์†Œ ์ตœ์ ์ด ์ „์ฒด ์ตœ์  ์•„๋‹˜ ๋ฐฑํŠธ๋ž˜ํ‚น

โœ… ์ •๋ฆฌ: ๊ทธ๋ฆฌ๋”” ์‚ฌ์šฉ ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  1. ์„ ํƒ์ด ๋‹ค์Œ ์„ ํƒ์— ์˜ํ–ฅ์„ ์ฃผ๋Š”๊ฐ€? → ์˜ํ–ฅ ํฌ๋ฉด โŒ
  2. ์ง€๊ธˆ์˜ ์ตœ์„ ์ด ์ „์ฒด์—์„œ ํ•ญ์ƒ ์ตœ์„ ์ธ๊ฐ€? → ์•„๋‹ˆ๋ฉด โŒ
  3. ๋ฌธ์ œ์—์„œ "์ตœ์ ํ•ด"๋ฅผ ๊ตฌํ•˜๋ผ๊ณ  ํ•  ๋•Œ, ์กฐํ•ฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์€? → ๊ทธ๋Ÿฌ๋ฉด DP๋‚˜ ํƒ์ƒ‰ ํ•„์š”
  4. ๋ฌธ์ œ์—์„œ ์ž…๋ ฅ ์กฐ๊ฑด์ด ๋‹ค์–‘ํ•˜๊ฒŒ ๊ผฌ์—ฌ ์žˆ๋Š”๊ฐ€? → ๊ทธ๋ฆฌ๋”” ๋‹จ๋…์œผ๋ก  ์œ„ํ—˜
728x90
๋ฐ˜์‘ํ˜•