Dynamic Programming

๋„ˆ๋ฌด ์–ด๋ ค์›Œ์š”

๋™์  ๊ณ„ํš๋ฒ• (DP)

  • ํ•˜๋‚˜๋„ ๋‹ค์ด๋‚˜๋ฏน ํ•˜์ง€์•Š๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ƒฅ ๋ฉ‹์žˆ์–ด ๋ณด์ด๋ ค๊ณ  ๋ถ™์ธ ์ด๋ฆ„..?

    • ๋Ÿฐํƒ€์ž„ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋‹ค์ด๋‚˜๋ฏน์ด๋ผ๊ณ  ํ•˜๋ฉด ์ด๊ฒƒ๊ณผ ๊ด€๋ จ์€ ์—†๋‹ค๊ณ  ํ•œ๋‹ค..

  • ๋ฌธ์ œ๋ฅผ ์ชผ๊ฐœ์„œ ์ž‘์€ ๋ฌธ์ œ์˜ ๋‹ต์„ ๊ตฌํ•œ๋‹ค์Œ, ๊ทธ๊ฑธ ๊ฐ€์ง€๊ณ  ๋” ํฐ ๋ฌธ์ œ์˜ ๋‹ต์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณต

  • ๋ถ„ํ• ์ •๋ณต๊ณผ ๋น„์Šทํ•œ ๋А๋‚Œ์ธ๊ฐ€?

DP ๊ตฌํ˜„ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•

Top-down
Bottom-up

๊ตฌํ˜„

์žฌ๊ท€

๋ฐ˜๋ณต๋ฌธ

์ €์žฅ ๋ฐฉ์‹

Memoization(๋ฉ”๋ชจ์ด์ œ์ด์…˜)

Tabulation(ํƒ€๋ทธ๋ ˆ์ด์…˜)

์žฅ์ 

์ง๊ด€์ ์ด๋ผ ๊ฐ€๋…์„ฑ์ด ์ข‹์Œ

์žฌ๊ท€๋ณด๋‹ค (๋งŽ์ด) ๋น ๋ฅด๋‹ค

๋‹จ์ 

depth๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ ์ €ํ•˜

์ ํ™”์‹์„ ๋„์ถœ ํ•ด์•ผํ•œ๋‹ค.

  • ๋‘ ๋ฐฉ์‹๋‹ค ๊ณตํ†ต์ ์œผ๋กœ ํ…Œ์ด๋ธ”(dp)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”, ๋ฐฐ์—ด ๊ฐ™์€ ๊ฒƒ์„ ์ƒ์„ฑํ•œ๋‹ค.

๋ฉ”๋ชจ์ด์ œ์ด์…˜ Memoization

  • ํ•œ ๋ฒˆ ๊ตฌํ•œ ๋‹ต์„ ๋˜ ๊ตฌํ•˜์ง€ ์•Š๋„๋ก ์บ์‹ฑ(dp ํ…Œ์ด๋ธ”)์— ์ €์žฅํ•ด๋‘๊ณ  ๊ฐ€์ ธ๋‹ค๊ฐ€ ์‚ฌ์šฉํ•œ๋‹ค -> ์ค‘๋ณต ์—ฐ์‚ฐ์„ ๋ฐฉ์ง€

  • ํ•„์š”ํ•œ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค๋งŒ ๊ตฌํ•œ๋‹ค.

ํƒ€๋ทธ๋ ˆ์ด์…˜ Tabulation

  • ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์˜ ๋‹ต์„ ๋ฏธ๋ฆฌ ๋‹ค ๊ตฌํ•œ๋‹ค. -> ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋‹ต๋“ค๊นŒ์ง€ ๋ชจ๋‘ ๊ตฌํ•œ๋‹ค.

  • ํ…Œ์ด๋ธ”์„ ์ฑ„์›Œ๊ฐ„๋‹ค๋Š” ์˜๋ฏธ์—์„œ ํƒ€๋ทธ๋ ˆ์ด์…˜์ด๋‹ค.

  • ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋‹ต๊นŒ์ง€ ์ „๋ถ€ ๊ตฌํ•œ๋‹ค.

Last updated