๐Ÿ’ป Computer Science/Algorithm

    ์ด๋ถ„ ํƒ์ƒ‰(Binary Search)

    ์ด๋ถ„ ํƒ์ƒ‰(Binary Search)

    ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ์ˆซ์ž(target)์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์ „์ฒด์˜ ์ค‘๊ฐ„๊ฐ’์„ target ๊ฐ’๊ณผ ๋น„๊ต ์ค‘๊ฐ„๊ฐ’์ด target ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ์™ผ์ชฝ ๋ถ€๋ถ„๋งŒ ์„ ํƒ ์™ผ์ชฝ๋ถ€๋ถ„์˜ ์ค‘๊ฐ„๊ฐ’์„ ๋‹ค์‹œ target ๊ณผ ๋น„๊ต ์ •๋ฐฉํ–ฅ์œผ๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์žฌ๊ท€๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ฐฉํ–ฅ๋„ ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๊ฐœ๋…์ ์œผ๋กœ๋Š” ์žฌ๊ท€๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐœ๋… ์ •๋ ฌ๋œ ์ž๋ฃŒ๋ฅผ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ฃผ์˜์  : ์ž๋ฃŒ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์œผ๋กœ ์ •๋ ฌ๋œ ์ž๋ฃŒ์—ฌ์•ผ ํ•œ๋‹ค. ์ด์ง„ํŠธ๋ฆฌ, ๋ฐ”์ด๋„ˆ๋ฆฌ์„œ์น˜๋Š” ์ฝ”๋”ฉ ์ธํ„ฐ๋ทฐ ๋‹จ๊ณจ๋ฌธ์ œ ํผํฌ๋จผ์Šค๊ฐ€ ์•„์ฃผ ์ข‹๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ์ค‘์— dynamic programming, recursion์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํŠน์ง• linear search (์ˆœ์ฐจ๊ฒ€์ƒ‰) : ์ˆœ์„œ๋Œ€๋กœ ์ฐพ๋Š”๋‹ค. ์„ฑ๋Šฅํ‰๊ฐ€์‹œ ๋น„๊ต๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ..

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

    ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ‘ธ๋Š” ๋ฐฉ๋ฒ• ํ”ํžˆ ๋งํ•˜๋Š” DP๊ฐ€ ๋ฐ”๋กœ '๋™์  ๊ณ„ํš๋ฒ•' ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ, ๋‹จ ํ•œ ๋ฒˆ๋งŒ ํ’€๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ฆ‰, ๋˜‘๊ฐ™์€ ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค. ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋งŽ์ด ์ด์šฉ๋˜๋Š” ์ˆ˜ํ•™์  ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋™์  ๊ณ„ํš๋ฒ•์€ Optimal Substructure์—์„œ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค. Optimal Substructure : ๋‹ต์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ ํ–ˆ๋˜ ๋˜‘๊ฐ™์€ ๊ณ„์‚ฐ์„ ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋Š” ๋ฌธ์ œ ๊ตฌ์กฐ ์ ‘๊ทผ ๋ฐฉ์‹ ์ปค๋‹ค๋ž€ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž‘๊ฒŒ ์ชผ๊ฐœ์„œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ ๋ถ„ํ•  ์ •๋ณต๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ ์ค‘๋ณต ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์ฐจ์ด์ ์ด ์กด์žฌํ•œ๋‹ค. ๋ชจ๋“  ๋‹ต์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ๊ทธ ์ค‘ ์ตœ์ ํ•ด์˜ ์ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜..