๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฌธ์ œ ํ•ด๊ฒฐ๋ฒ•

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

by ๋Œ€๋ณต2 2023. 8. 15.

- DP๋ž€?

DP๋Š” ํ•˜๋‚˜์˜ ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ถ„๋ฅ˜๋กœ ๋„ฃ๊ธด ํ–ˆ์œผ๋ฉด ์ด๋Š” ์‚ฌ์‹ค ๋ฐฉ๋ฒ•๋ก ์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒŒ ๋” ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฆ„์˜ ๋œป์ด ๋ญ”๊ฐ€ ๊นŠ์€ ์˜๋ฏธ๊ฐ€ ๋‹ด๊ฒจ ์žˆ์–ด ๋ณด์ด์ง€๋งŒ, ๊ทธ๋ƒฅ ๋ฉ‹์žˆ์–ด์„œ ์ง€์€ ์ด๋ฆ„์ด๋ฏ€๋กœ ์ด๋ฆ„๊ณผ ํ•ด๋‹น ๋ฐฉ๋ฒ•์— ์—ฐ๊ด€์ด ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์€ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

 

- ์™œ ์“ฐ๋‚˜์š”?

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด ์ตœ์ ํ™”๋‹ค. ํ›„์— ์„ค๋ช…๋  Momozation ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜์Œ ๊ฐ’์„ ๋ณด๊ด€ํ•ด๋†“๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์—ฐ์‚ฐ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•  ํ•„์š”๊ฐ€ ์—†์–ด ์ตœ์ ํ™”์— ์šฉ์ดํ•˜๋‹ค.

 

 

- ์–ธ์ œ ์“ฐ๋‚˜์š”?

DP๋ฅผ ์ ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” 2๊ฐ€์ง€ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๋‹ค.

1. ๊ฒน์น˜๋Š” ์†Œ๋ฌธ์ œ

์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์ด ์—†์ด ๊ฐ ์†Œ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด DP๋ฅผ ์ ์šฉํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

2. ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ

์†Œ๋ฌธ์ œ๋“ค์˜ ๊ฐ ์ตœ์ ์˜ ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“  ์ „์ฒด ๋ฌธ์ œ์˜ ๊ฐ’์ด ์ตœ์ ์ด ๋˜๋ฉด DP๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

-  DP์˜ ์ ์šฉ

DP๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ๋ชจ๋‘ ํŠน์ •ํ•œ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

 

  • ๊ทœ์น™ 1. ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ์ž‘์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ํฐ ๋ฌธ์ œ์˜ ๋‹ต์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทœ์น™ 2. ์ ํ™”์‹์€ ๋ชจ๋“  ๊ฐ’ n์— ๋Œ€ํ•ด ํ•ญ์ƒ ์„ฑ๋ฆฝํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ทœ์น™ 3. Memozation: ๋ฐ˜๋ณต๋˜๋Š” ๋™์ผ ์—ฐ์‚ฐ ๊ฐ’์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ, ํ•„์š”ํ•  ๋•Œ ํ˜ธ์ถœํ•œ๋‹ค.
  • ๊ทœ์น™ 4. ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”(๊ทœ์น™ 3์„ ์ €์žฅํ•  ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๊ตฌ์„ฑ)

ํ”ผ๋ณด๋‚˜์น˜์˜ ์ˆ˜ ๋ฌธ์ œ ์ค‘, f(5)์˜ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž 

 f(5) = f(4) + f(3)

๋กœ ์ •์˜๋  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ f(4)์™€ f(3)์—ญ์‹œ๋„ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

f(4) = f(3) + f(2)

f(3) = f(2) + f(1)

๊ฒฐ๊ตญ ํ”ผ๋ณด๋‚˜์น˜์˜ ์ˆ˜ ๋ฌธ์ œ์—์„œ N์„ ๊ตฌํ•˜๊ณ ์ž ํ• ๋•Œ๋Š”

f(N) = f(N-1) + f(N-2)

๋ผ๋Š” ์‹์„ ํ•ญ์ƒ ๋Œ€์ž…ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ์‹์„ ์ ํ™”์‹์ด๋ผ๊ณ  ์นญํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ f(1)๊ณผ f(2)์˜ ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ๊ณ , 3,4,5,... ๋ฅผ ๋”ฐ๋กœ ์—ฐ์‚ฐํ•œ ํ›„์— ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด f(N)๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด f(N-1)์™€ f(N-2)์„ ๋˜ ๊ณ„์‚ฐํ•  ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

- DP์˜ ํ’€์ด ๋ฐฉ์‹

Bottom-Up๋ฐ์ดํ„ฐ๊ฐ€ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„๊ฐ€๋ฉฐ ๋ณธ๋ž˜ ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

1~ N๊นŒ์ง€์˜ ์ €์žฅ ๊ณต๊ฐ„ dp [N]์ด ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด dp [1], dp [2], dp [3],..., dp [N]๊นŒ์ง€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ”ผ๋ณด๋‚˜์น˜์˜ ๊ฒฝ์šฐ f(1) ๊ตฌํ•˜๊ณ .. f(2) ๊ตฌํ•˜๊ณ โ€ฆf(n)๊ตฌํ•˜๊ณ ...

=> ๋ณดํ†ต ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜๋ฉฐ, ์ˆœ์ฐจ์  DP ํ’€์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Top-Down ์–ด๋– ํ•œ ํŠน์ • ํŒจํ„ด์„ ์ด์šฉํ•˜์—ฌ ์—ฐ์‚ฐ(์ ํ™”์‹)

 => ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋ณดํ†ต ์ด์šฉํ•จ(Recursion, Momozation)