Algorithms
Last updated
Was this helpful?
Last updated
Was this helpful?
ํ๋ ค๋ ๋ฌธ์ ๊ฐ ํฐ ๋ฌธ์ ์ผ ๊ฒฝ์ฐ ๊ทธ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ค๋ก ๋๋๊ณ (Divide), ๊ทธ ๋ฌธ์ ๋ฅผ ํผ ๋ค(Conquer) ๋ค์ ํฉ์ณ๋๊ฐ๋ ๋ฐฉ์(Combine)์ด๋ค. ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ด์งํ์๊ณผ ํฉ๋ณ ์ ๋ ฌ ์๋ค.
๋ถํ ์ ๋ณต๋ฒ๊ณผ ๋น์ทํ๊ณ ์ฐจ์ด์ ์ ๋ถ๋ถ์ผ๋ก ๋๋ ๋ฌธ์ ๊ฐ ์๋ก ์ค์ฒฉ๋ ๊ฒฝ์ฐ ์ด์ ์ ๊ณ์ฐํด๋ ๊ฒ์ ์ฌํ์ฉํจ์ผ๋ก์จ ๋ ๋ณตํฉํ ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ๊ณ์ฐํ ์ ์๋ค.
๋ถํ ์ ๋ณต๋ฒ๊ณผ ๋น์ทํ๋ฉฐ, ์ฐจ์ด์ ์ ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ๋ฉ๋ชจํ๋ฉด์ ์ฌ๊ท์ ์ผ๋ก ํผ๋ค. (Top-down Approach)
ํ ์ด๋ธ ๋ฐฉ์์ผ๋ก ์ ๋ฆฌํ๋ฉด์ ๋ฌธ์ ๋ฅผ ํผ๋ค. ์ค๋ณต ๋ฌธ์ ๋ฅผ ๋จผ์ ํผ๋ค. (Bottom-up Approach) ๋ถํ ์ ๋ณต๋ฒ๊ณผ ๋น์ทํ๋ฉฐ, ์ฐจ์ด์ ์ ํ ์ด๋ธ ๋ฐฉ์์ผ๋ก ์ ๋ฆฌํ๋ฉด์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ํผ๋ค. Memoization๊ณผ ์ฐจ์ด์ ์ ์ฌ๊ท ๋์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ค์ต์คํธ๋ผ์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์๋ค.
๊ทธ๋ ๊ทธ๋ ์ต์ ์ ์ ํ์ ํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ๋จํ๊ณ ๋น ๋ฅด์ง๋ง ์ต์ ์ ๋ต์ด ๋ณด์ฅ๋์ง๋ ์๋๋ค. ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ทธ๋ํ์ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ต ๋น์ฉ์ผ๋ก ์ฐ๊ฒฐํ๋ ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ(Kruskal algorithm)๊ณผ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ(Prim algorithm)์ด ์๊ณ ๋ ๋ ธ๋ ์ฌ์ด์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค. ํฌ๋ฃจ์ค์นผ์ ์ต์ด ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ๊ฐ ํ๋์ ํธ๋ฆฌ์ธ ์ํ์์ ๊ฐ์ค์น๊ฐ ๊ฐ์ฅ ์์ ๊ฐ์ ์ ๊ณ ๋ฅธ ํ ํด๋นํ๋ ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ์ ๋ ์ฌ์ดํด์ด ๋ฐ์ํ์ง ์์ผ๋ฉด ๋ ๋ ธ๋๋ฅผ ํฉ์ณ๋๊ฐ๋ฉด์ ์ต์์ ์ฅํธ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ด๋ค. ํ๋ฆผ์ ์๋ฌด ๋ ธ๋๋ ์์๋ ธ๋๋ก ์ค์ ํ๊ณ ํ์ฌ ๋ ธ๋์์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฐ์ ์ค ๊ฐ์ฅ ๊ฐ์ค์น๊ฐ ์์ ๊ฐ์ ์ ์ฐจ๋ก๋ก ๋ถ์ฌ๋๊ฐ๋ ๋ฐฉ์์ด๋ค. ๋ค์ต์คํธ๋ผ๋ ์์ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ๊ฒฐ๋ ๋ ธ๋๋ฅผ ์ถ๊ฐํด๊ฐ๋ฉด์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ฐ์ค์น๊ฐ 0์ด์์ธ ๊ทธ๋ํ์์๋ง ํ์ฉ ๊ฐ๋ฅํ๋ค.\
๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ์๋ํด๋ณด๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ์๋ํ๊ธฐ ๋๋ฌธ์ ๋๋ฆด ์ ์์ผ๋ฉฐ ๊ฐ์ง์น๊ธฐ๋ก ๊ณ์ฐ ์ฑ๋ฅ์ ์ฌ๋ฆด ์ ์๋ค. ์ต์๋น์ฉ์ ์ฐพ๋ ๋ฌธ์ ๋ก ์๋ฅผ ๋ค์ด๋ณด๋ฉด, ์ง๊ธ๊น์ง ๊ณ์ฐ๋ ์ต์๋น์ฉ์ด 100์ด๋ผ๋ฉด 100๋ณด๋ค ํฐ ๋น์ฉ์ ํ์ํ์ง ํ์ง ์์ ๊ณ์ฐ์ ์ค์ด๋ ์์ด๋ค. ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก DFS, BFS ๊ฐ ์๋ค.
์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ์ ์๊ฐ๋ณต์ก๋(Time Complexity)์ธ ์๊ณ ๋ฆฌ์ฆ ์ํ์๊ฐ ๊ณต๊ฐ๋ณต์ก๋(Space Complexity)์ธ ์๊ณ ๋ฆฌ์ฆ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์๋ค. ๋น ์ค์ ์์ O(1) < O(logn) < O(n) < O(nlogn) < O(n2)