[์•Œ๊ณ ๋ฆฌ์ฆ˜] DP(Dynamic Programming)๋ž€?

DP๋ž€? ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋™์  ๊ณ„ํš๋ฒ•์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์—ฐ์‚ฐ ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. DP๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. problem์ด ๋” ์ž‘์€ sub-problem๋“ค๋กœ ์ชผ๊ฐœ์งˆ ์ˆ˜ ์žˆ์„๋•Œ sub-problem๋“ค์˜ ์†”๋ฃจ์…˜์œผ๋กœ ๋” ํฐ ๊ทœ๋ชจ์˜ problem์˜ ์†”๋ฃจ์…˜์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์ชผ๊ฐœ์ง„ sub-problem๋“ค์ด ๊ฒน์น  ๋•Œ ์ฆ‰, ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ’€์–ด ์ €์žฅ(Memoization) ํ•จ์œผ๋กœ์จ, ํ•œ ๋ฒˆ ๊ณ„์‚ฐํ•œ ๋ฌธ์ œ๋Š” ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. Top-Down vs Bottom-up DP๋กœ ํ’€์ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 2๊ฐ€์ง€, Top-Down ๋ฐฉ์‹๊ณผ Bottom-up๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. Top-Down ๋ฐฉ์‹ ์šฐ๋ฆฌ๋ง๋กœ 'ํ•˜ํ–ฅ..

CS/Algorithm 2022. 10. 25. 16:31
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ(Sorting Algorithm)์ด๋ž€?

์ •๋ ฌ์ด๋ž€? ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ์›์†Œ๋“ค์„ ๋ฒˆํ˜ธ์ˆœ์ด๋‚˜ ์‚ฌ์ „ ์ˆœ์„œ์™€ ๊ฐ™์ด ์ผ์ •ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์—ด๊ฑฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ : 1, 2, 3, ..., n-1, n ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ : n, n-1 ... 3, 2, 1 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณต์žก๋„ ๊ณ„์‚ฐ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋งค์šฐ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ํšจ์œจ์„ฑ์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„ : ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ์†๋„ (์‹œ๊ฐ„ ํšจ์œจ์„ฑ) ๊ณต๊ฐ„ ๋ณต์žก๋„ : ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์ฆˆ (๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํšจ์œจ์„ฑ) ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋น…์˜ค(Big-O), ๋น…์˜ค๋ฉ”๊ฐ€(Big-Ω), ๋น…์„ธํƒ€(Big-Θ) ํ‘œ๊ธฐ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•(big-O notation)์ด๋ž€? ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ํ‘œ๊ธฐํ•ด์ฃผ๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ์ƒํ•œ์„  ๊ธฐ..

CS/Algorithm 2022. 9. 25. 19:10