Algorithm 1

[PS] Dynamic programming : ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ•œ ๋ฒˆ ํ•ด๊ฒฐ๋œ ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ์ •๋‹ต์„ ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ๋กํ•˜์—ฌ ํ•œ ๋ฒˆ ๊ณ„์‚ฐํ•œ ๋‹ต์€ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ธฐ๋ฒ•. ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ ํ™”์‹์„ ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ๋กœ ์˜ฎ๊ฒจ์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ ํ™”์‹์ด๋ž€ ์ธ์ ‘ํ•œ ํ•ญ๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„์‹์„ ์˜๋ฏธํ•œ๋‹ค. ์กฐ๊ฑด ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ(Optional substructure) ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž‘์€ ๋ฌธ์ œ์˜ ๋‹ต์„ ๋ชจ์•„์„œ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ(Overlapping Subproblem) ๋™์ผํ•œ ์ž‘์€ ๋ฌธ์ œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•จ ์˜ˆ์‹œ (๋ฌธ์ œ ๋งํฌ ์ถ”๊ฐ€ ์˜ˆ์ •) ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ด์šฉํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• ๋‘๊ฐ€์ง€ 1. Top-down : ๋ฉ”๋ชจ์ด์ œ์ด์…˜ (Memoization) ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์€ ๋ฌธ์ œ๋ฅผ ํ˜ธ..