์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ“š

[์•Œ๊ณ ๋ฆฌ์ฆ˜] DP ์•Œ๊ณ ๋ฆฌ์ฆ˜ (& ์žฌ๊ท€ํ•จ์ˆ˜)

leejaejae 2024. 7. 18. 21:46

DP ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ ‘๊ทผ ๋ฐฉ์‹์— ๊ฐ€๊นŒ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž„โจ์“ฐ์ด๋Š” ์ƒํ™ฉ์ด ๊ตฌ์ฒด์ ์ด์ง€ ์•Š์Œโฉ
  • ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•œ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ  ํ‘ธ๋Š” ๊ธฐ๋ฒ•์ž„
  • ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๊ธฐ๋ฒ•์„ ํ™œ์šฉ -> ์ค‘๋ณต ๊ณ„์‚ฐ์„ ์ค„์ž„
    • ๋ฉ”๋ชจ์ด์ œ์ด์…˜: ๋™์ผํ•œ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ, ํ•œ ๋ฒˆ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์”€
    • ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์„ DP table์ด๋ผ๊ณ  ํ•จ
    • DP table์€ ๋ฌธ์ œ์˜ ์žฌ๊ท€์ ์ธ ๊ตฌ์กฐ์— ๋”ฐ๋ผ 1์ฐจ์› ๋ฐฐ์—ด, 2์ฐจ์› ๋ฐฐ์—ด ๋˜๋Š” ๊ทธ๋ž˜ํ”„, ํŠธ๋ฆฌ ๋“ฑ์œผ๋กœ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
  • ๋ฌธ์ œ์˜ ์žฌ๊ท€์ ์ธ ๊ตฌ์กฐโจ๊ด€๊ณ„์‹โฉ์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ

 

๋ฌธ์ œ ํ’€ ๋•Œ ์ ‘๊ทผ๋ฒ•

  • ๋ฌธ์ œ์˜ ์žฌ๊ท€์ ์ธ ๊ตฌ์กฐ ํŒŒ์•… 
  • ์ˆ˜์‹์œผ๋กœ ํ‘œํ˜„
  • ์ดˆ๊ธฐ๊ฐ’ ์ฒ˜๋ฆฌ

 

์‹ค์ œ ๋ฌธ์ œ์—์„œ DP ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์‹ค์ œ DP๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•  ๋•Œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฌธ์ œ์˜ ์žฌ๊ท€์ ์ธ ๊ตฌ์กฐ(๊ด€๊ณ„์‹)์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ
  • ์žฌ๊ท€์  ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ–ˆ์œผ๋ฉด ์ˆ˜์‹์œผ๋กœ ํ‘œํ˜„, ์ดˆ๊ธฐ๊ฐ’ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ง„ํ–‰ํ•˜๋ฉด ๋จ

  • If, ๋ฌธ์ œ์˜ ์žฌ๊ท€์  ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด
  • ๊ทธ ๋ฌธ์ œ๋Š” DP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜, ๋ฌธ์ œ๋ฅผ ์žฌํ•ด์„ํ•ด์„œ ์žฌ๊ท€์  ๊ตฌ์กฐ๋ฅผ ์ฐพ์•„ํ– ํ•˜๋Š” ๋ฌธ์ œ์ž„

  • ๋ธŒ๋ฃจํŠธํฌ์Šค → ๊ทธ๋ฆฌ๋”” → DP ์ˆœ์œผ๋กœ ์ ‘๊ทผํ•ด๋ณด์…ˆ

 

DP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

  • ์žฌ๊ท€์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ฐพ๊ณ , ์ฐพ์€ ๊ตฌ์กฐ์— ๊ฑธ๋งž๋Š” DP Table์„ ์™„์„ฑ.
  • DP table์€ Bottom-Up ๋ฐฉ์‹์ด๋‚˜ Top-Down ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•จ.
    • Bottom-Up: ์ž‘์€ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์™„์„ฑ, ๋ณดํ†ต ๋ฐ˜๋ณต๋ฌธ ์ด์šฉ → DP table ์ „์ฒด๋ฅผ ์™„์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
    • Top-Down: ํฐ ๋ถ€๋ถ„(๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’)์„ ๊ธฐ์ค€์œผ๋กœ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๊ตฌํ•จ, ์žฌ๊ท€ํ•จ์ˆ˜ ์ด์šฉ → DP table์„ ์ผ๋ถ€๋งŒ ์™„์„ฑํ•ด๋„ ๋˜๋Š” ๊ฒฝ์šฐ

 

Tip! ์žฌ๊ท€ํ•จ์ˆ˜

  • ๊ตฌ์กฐ
    • Base case(๊ธฐ๋ณธ ์ผ€์ด์Šค): ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๋ถ€๋ถ„
    • Recursive Case(์žฌ๊ท€ ์ผ€์ด์Šค): ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„

  • ์ข…๋ฃŒํ•˜๋Š” ๋ถ€๋ถ„์˜ ์ฝ”๋“œ(Base Case)๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” Recursive Case์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์ด ์–ด๋”˜์ง€๋ฅผ ์ƒ๊ฐํ•ด ๋ณผ ๊ฒƒ