๐Ÿ“’ ๋™์ ๊ณ„ํš๋ฒ•(Dynamic Programming)

Kimdongkiยท2024๋…„ 3์›” 29์ผ

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
6/8

๐Ÿ“Œ ์ •์˜

์ฃผ์–ด์ง„ ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ ์žฌ๊ท€์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ณด๋‹ค ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด
๋ถ€๋ถ„ ๋ฌธ์ œ๋ฅผ ํ’€์–ด ์ด ํ•ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ „์ฒด ๋ฌธ์ œ์˜ ํ•ด๋ฐ›์— ์ด๋ฅด๋Š” ๋ฐฉ์‹

์ฆ‰ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋ฐ”๊พธ์–ด ํ‘ธ๋Š” ๋ฐฉ์‹์ธ ๊ฒƒ์ด๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ง„ํ–‰์— ๋”ฐ๋ผ ํƒ์ƒ‰ํ•ด์•ผ ํ•  ๋ฒ”์œ„๋ฅผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•จ์œผ๋กœ์จ
ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ํ•œ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด -> ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด?
f(4) = f(3) + f(2)
= f(2) + f(1) + f(1) + f(0)
= f(1) + f(0) + f(1) + f(1) + f(0)
๋ณต์žก๋„ -> ์ง€์ˆ˜ํ•จ์ˆ˜์˜ ํ˜•ํƒœ

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด -> ๋™์ ๊ณ„ํš๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด?
f(0) = 0, f(1) = 1
f(2) = f(1) + f(0) = 1
f(3) = f(2) + f(1) = 2
f(4) = f(3) + f(2) = 3
๋ณต์žก๋„ -> ์„ ํ˜•ํ•จ์ˆ˜์˜ ํ˜•ํƒœ

๐Ÿ“œ Knapsack Problem

-> ๊ฐ€์žฅ ๋†’์€ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ๋ฌผ๊ฑด๋“ค์„ ๊ณจ๋ผ ๋ฐฐ๋‹น์— ๋‹ด๊ธฐ

๐Ÿ“™ Code


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