๐ป Computer Science/Algorithm
์ด๋ถ ํ์(Binary Search)
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ์ํ๋ ์ซ์(target)์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๋ฐฐ์ด ์ ์ฒด์ ์ค๊ฐ๊ฐ์ target ๊ฐ๊ณผ ๋น๊ต ์ค๊ฐ๊ฐ์ด target ๊ฐ๋ณด๋ค ํฌ๋ฉด ์ผ์ชฝ ๋ถ๋ถ๋ง ์ ํ ์ผ์ชฝ๋ถ๋ถ์ ์ค๊ฐ๊ฐ์ ๋ค์ target ๊ณผ ๋น๊ต ์ ๋ฐฉํฅ์ผ๋ก ํธ๋ ๋ฐฉ๋ฒ๊ณผ ์ฌ๊ท๋ก ํธ๋ ๋ฐฉ๋ฒ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ ๋ฐฉํฅ๋ ์ด๋ป๊ฒ ๋ณด๋ฉด ๊ฐ๋ ์ ์ผ๋ก๋ ์ฌ๊ท๋ก ํธ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ฐ๋ ์ ๋ ฌ๋ ์๋ฃ๋ฅผ ๋ฐ์ผ๋ก ๋๋์ด ํ์ํ๋ ๋ฐฉ๋ฒ ์ฃผ์์ : ์๋ฃ๋ ์ค๋ฆ์ฐจ์ ์ผ๋ก ์ ๋ ฌ๋ ์๋ฃ์ฌ์ผ ํ๋ค. ์ด์งํธ๋ฆฌ, ๋ฐ์ด๋๋ฆฌ์์น๋ ์ฝ๋ฉ ์ธํฐ๋ทฐ ๋จ๊ณจ๋ฌธ์ ํผํฌ๋จผ์ค๊ฐ ์์ฃผ ์ข๊ณ ๊ตฌํํ๋ ์ค์ dynamic programming, recursion์ ๋ณผ ์ ์๋ค. ํน์ง linear search (์์ฐจ๊ฒ์) : ์์๋๋ก ์ฐพ๋๋ค. ์ฑ๋ฅํ๊ฐ์ ๋น๊ต๋์์ผ๋ก ์ฌ์ฉํ๋ค. ..
๋์ ๊ณํ๋ฒ(Dynamic Programming)
๋ณต์กํ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์ ๋ก ๋๋์ด ํธ๋ ๋ฐฉ๋ฒ ํํ ๋งํ๋ DP๊ฐ ๋ฐ๋ก '๋์ ๊ณํ๋ฒ' ํ ๊ฐ์ง ๋ฌธ์ ์ ๋ํด์, ๋จ ํ ๋ฒ๋ง ํ๋๋ก ๋ง๋ค์ด์ฃผ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฆ, ๋๊ฐ์ ์ฐ์ฐ์ ๋ฐ๋ณตํ์ง ์๋๋ก ๋ง๋ค์ด์ค๋ค. ์คํ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋ง์ด ์ด์ฉ๋๋ ์ํ์ ์ ๊ทผ ๋ฐฉ์์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ ์ ์๋ค. ๋์ ๊ณํ๋ฒ์ Optimal Substructure์์ ํจ๊ณผ๋ฅผ ๋ฐํํ๋ค. Optimal Substructure : ๋ต์ ๊ตฌํ๊ธฐ ์ํด ์ด๋ฏธ ํ๋ ๋๊ฐ์ ๊ณ์ฐ์ ๊ณ์ ๋ฐ๋ณตํ๋ ๋ฌธ์ ๊ตฌ์กฐ ์ ๊ทผ ๋ฐฉ์ ์ปค๋ค๋ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ๊ธฐ ์ํด ์๊ฒ ์ชผ๊ฐ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ธ ๋ถํ ์ ๋ณต๊ณผ ๋งค์ฐ ์ ์ฌํ๋ค. ํ์ง๋ง ๊ฐ๋จํ ๋ฌธ์ ๋ก ๋ง๋๋ ๊ณผ์ ์์ ์ค๋ณต ์ฌ๋ถ์ ๋ํ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค. ๋ชจ๋ ๋ต์ ๋ง๋ค์ด๋ณด๊ณ ๊ทธ ์ค ์ต์ ํด์ ์ ์๋ฅผ ๋ฐํ..