๐ŸŽฎ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ [ ALL IN ONE ] 27. DP(Dynamic Programming) ์ด์ •๋ฆฌ

๋‚˜๋‚˜์ฝ˜ยท2023๋…„ 12์›” 4์ผ

DP(Dynamic Programming)


  1. Overlapping subproblem
    ๐Ÿ‘‰ Problem์„ ์ž‘์€ subproblem์œผ๋กœ ๋ถ„ํ•ด
    ๐Ÿ‘‰ subproblem์˜ ๊ณ„์‚ฐ๊ฐ’์„ ์žฌ์‚ฌ์šฉ
  2. Optimal substructure
    ๐Ÿ‘‰ subproblem์˜ ์ตœ์  ํ•ด๋ฒ•์œผ๋กœ ์›๋ž˜ ๋ฌธ์ œ์˜ ์ตœ์  ํ•ด๋ฒ•์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿšฟ Top-down ๋ฐฉ์‹

๐Ÿ“ข f(n)f(n)๋ถ€ํ„ฐ f(1)f(1)๊นŒ์ง€ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹

  1. ๐ŸŒŸ์žฌ๊ท€๐ŸŒŸ => ๊ตฌํ˜„์ด ๋น ๋ฅด๋‹ค
  2. ์žฌ๊ท€ํ’€์ด์—์„œ ์ค‘๋ณต๋˜๋Š” ๊ณ„์‚ฐ๊ฐ’์„ ์ €์žฅํ•˜์—ฌ(memoize) ๋™์ผํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ์— ์žฌํ™œ์šฉํ•œ๋‹ค.
  3. hashtable ๋˜๋Š” list์— ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•œ๋‹ค.

memoization : Top-down ๋ฐฉ์‹์—์„œ memo๋ฅผ ์ฑ„์›Œ ๋‚˜๊ฐ€๋Š” ๊ฒƒ


๐Ÿ—พ Bottom-up ๋ฐฉ์‹

๐Ÿ“ข f(1)f(1)๋ถ€ํ„ฐ f(n)f(n)๊นŒ์ง€ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹

  1. ๐ŸŒŸ๋ฐ˜๋ณต๋ฌธ๐ŸŒŸ => ์‹คํ–‰์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค
  2. ๋” ์ž‘์€ subproblem์— ๋Œ€ํ•œ ๊ณ„์‚ฐ๊ฒฐ๊ณผ๋ฅผ DP table์— ์ €์žฅํ•˜์—ฌ ๋” ํฐ ๋ฌธ์ œ์˜ ๊ณ„์‚ฐ์— ํ™œ์šฉํ•œ๋‹ค.
  3. hashtable ๋˜๋Š” list์— ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•œ๋‹ค.

tabulation : Bottom-up ๋ฐฉ์‹์—์„œ memo๋ฅผ ์ฑ„์›Œ ๋‚˜๊ฐ€๋Š” ๊ฒƒ


์ ‘๊ทผ ๋ฐฉ๋ฒ•

๋ณดํ†ต ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์™„์ „ํƒ์ƒ‰์œผ๋กœ ๋จผ์ € ์ ‘๊ทผ์„ ํ•ฉ๋‹ˆ๋‹ค.
์™„์ „ํƒ์ƒ‰์€ 1. ์žฌ๊ท€๋ฅผ ๋งŽ์ด ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
์žฌ๊ท€๋Š” ํ•˜์œ„๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๊ธฐ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์žฌ๊ท€๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ 2. ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ

์ค‘๋ณต๋œ ๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ -> ๊ณ„์‚ฐ๊ฒฐ๊ณผ๋ฅผ (memo) ์ €์žฅํ•˜์—ฌ ์žฌํ™œ์šฉ


๋ฌธ์ œ ์ ์šฉ

  1. Optimum value(์ตœ๋Œ€, ์ตœ์†Œ), ๋ฐฉ๋ฒ•์˜ ๊ฐœ์ˆ˜ ๋“ฑ์„ ๊ตฌํ•  ๋•Œ
    • ~์˜ ์ตœ์†Œ ๋น„์šฉ์€?
    • ~์˜ ์ตœ๋Œ€ ์ด์ต์€?
    • ~๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ๊ฐœ์ˆ˜๋Š”?
    • What is the longest possible...
    • ํŠน์ • ์ง€์ ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€?
  2. ๋ฏธ๋ž˜์˜ ๊ณ„์‚ฐ์ด ์•ž์„  ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ๋ฐ›์„ ๋•Œ

+๋ฌธ์ œ ์†์— ๋‹ต์ด ์žˆ๋‹ค.

  • ๐ŸŒŸrecurrence relation๐ŸŒŸ (์žฌ๊ท€ ๊ด€๊ณ„์‹ = ์ ํ™”์‹)
  • ๐ŸŒŸbase case๐ŸŒŸ

์ •๋ฆฌ

DP : ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ํฌ๊ณ  ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ์ž‘๊ฒŒ ๋‚˜๋ˆ„๊ณ , ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ œ๋ผ๋ฉด ํ•œ ๋ฒˆ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ์ €์žฅํ•ด๋†“๊ณ  ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฌธ์ œ ํ’€์ด : ํŠน์ •ํ•œ ๋ฌธ์ œ๋ฅผ ์™„์ „ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ ‘๊ทผํ•ด๋ณด๊ณ , ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋„ˆ๋ฌด ๋†’๋‹ค๋ฉด DP๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์ž. subproblem์˜ ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์ฒซ๋ฒˆ์งธ ์ˆœ์„œ๋‹ค.

๊ตฌํ˜„ ๋ฐฉ๋ฒ• :
1. ์ผ๋‹จ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๋น„ํšจ์œจ์ ์ธ ๐ŸŒŸ์™„์ „ํƒ์ƒ‰๐ŸŒŸ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
2. ์ค‘๋ณต๋˜๋Š” ๐ŸŒŸsubproblem๐ŸŒŸ์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ๐ŸŒŸ(memoize)๐ŸŒŸํ•œ๋‹ค.
3. ๐ŸŒŸํƒ‘๋‹ค์šด -> ๋ฐ”ํ…€์—…๐ŸŒŸ์œผ๋กœ ์ฝ”๋“œ ์ „ํ™˜์„ ๊ณ ๋ คํ•œ๋‹ค.

์ฝ”ํ…Œ ์ถœ์ œ : DP๋Š” ๋ฌธ์ œ์— ์ ์šฉํ•˜๊ธฐ์— ์–ด๋ ค์šด ๊ฐœ๋…์ด๋ผ์„œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ์— ์ถฉ์‹ค๋งŒ ๋ฌธ์ œ ์œ„์ฃผ๋กœ ์ถœ์ œํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

๊ฐœ๋…๋งŒ ์ •๋ฆฌํ•˜๊ณ 

๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์–ด๋ณด์ž!!


์ถœ์ฒ˜

๐Ÿ“˜ Inflearn - ์ฝ”๋”ฉํ…Œ์ŠคํŠธ [ALL IN ONE]

profile
์ง€์‹์„ ๊ธฐ๋กํ•˜๊ณ , ๊ฒฝํ—˜์„ ์ฝ”๋“œ๋กœ ๋‚จ๊ฒจ๋ผ.

0๊ฐœ์˜ ๋Œ“๊ธ€