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

์•Œ๊ณ ๋ฆฌ์ฆ˜

[Python] ํŒŒ์ด์ฌ ๋‹ค์ด๋‚˜๋ฏน(๋™์ ) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌํ˜„, ๊ด€๋ จ ๋ฌธ์ œ ๋ชจ์Œ

๐Ÿšœ Dynamic Programming์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ

Dynamic Programming์€ ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ ํ•ด๊ฒฐ ํ›„, ํ•ด๋‹น ๋ถ€๋ถ„์˜ ํ•ด๋ฅผ ์ด์šฉํ•ด์„œ ๋ณด๋‹ค ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. memorization ๊ธฐ๋ฒ•(์ด์ „ ์‹คํ–‰์—์„œ ๊ตฌํ•œ ํ•ด๋ฅผ ์ €์žฅํ•ด๋‘ )์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ dp ๋ฌธ์ œ ๋ฆฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค.

 

๐Ÿšš ํ’€์ด ๋ฐฉ๋ฒ• ํŠน์ง•

โœ… ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ œ ์œ ํ˜• : ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ. ์ฆ‰, ๊ฐ’์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์Œ“๊ฑฐ๋‚˜ ์ฑ„์›Œ๊ฐ€๋Š” ๋ฌธ์ œ

  • dp๋ผ๋Š” ์ผ์ฐจ์› ๋ฐฐ์—ด ๋˜๋Š” ์ด์ฐจ์› ๋ฐฐ์—ด์— ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•œ ๊ฐ’๋“ค์„ ์ฑ„์›Œ ๋„ฃ์œผ๋ฉด์„œ ์ง„ํ–‰ํ•œ๋‹ค.
  • ์‚ฌ์šฉํ•  dp์˜ ํฌ๊ธฐ์™€ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ํ•œ์ •์ ์ด๋‹ค
  • ์‚ฌ์šฉํ•  dp๋ฅผ ๋ฏธ๋ฆฌ ์ผ์ฐจ์› ๋ฐฐ์—ด ๋˜๋Š” ์ด์ฐจ์› ๋ฐฐ์—ด๋กœ ์ •์˜ํ•ด ๋‘๊ณ  ์‹œ์ž‘ํ•œ๋‹ค.
  • 2์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„ ๊ฒ‰ for๋ฌธ์€ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐ›์€ ๊ฐ’(i), ์† for๋ฌธ์€ ๋‚ด๊ฐ€ ์ด์ „์— ๊ตฌํ•œ ํ•ด ์ค‘ ํ•ด๋‹น ๊ฐ’(j)๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • max(,) ๋น„๊ต๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. (๋Œ€๋ถ€๋ถ„ ์ด์ „ ์‹œํ–‰ํ•ด์™€ ์ƒˆ๋กญ๊ฒŒ ๊ตฌํ•œ ํ•ด๋ฅผ ๋น„๊ตํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค)
  • dp์˜ ํฌ๊ธฐ๊ฐ€ ํ•œ์ •์ ์ด์ง€ ์•Š๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค -> ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•˜์—ฌ T/F๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋“ฑ์˜ ๋‹ค๋ฅธ ๋ฐฉ์‹์„ ์ƒ๊ฐํ•ด๋ณด์ž
  • dp์— ์ €์žฅ๋˜๋Š” ๊ฐ’์€ ๊ตฌํ•˜๋ ค๋Š” ํ•ด์ด๋‹ค.

 

๋ฐ˜์‘ํ˜•