๐ Knowledge/์๋ฃ๊ตฌ์กฐ
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ n๊ฐ์ ์ซ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ปํ๋ค. ์ง๊ธ๋ถํฐ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ง ์ดํด๋ณด๋๋ก ํ์. ๋น๊ต ์ ๋ ฌ(comparison sort) ๋น๊ต ์ ๋ ฌ์ ๋ฐฐ์ด์ ์์ ์ ๊ฐ์ ๋น๊ต๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ฐ์ฅ ์ฝ๊ฒ ์๊ฐํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ด์ O(nlogn)์ด๋ผ๋ ์๊ฐ ํ๊ณ๋ฅผ ๋์ด์์ง ๋ชปํ๋ค. ์ด๋ฌํ ๋น๊ต ์ ๋ ฌ์ ์ข
๋ฅ๋ก์จ ์ ํ ์ ๋ ฌ(Selection Sort), ์ฝ์
์ ๋ ฌ(Insertion Sort), ํ ์ ๋ ฌ(Heap Sort), ํฉ๋ณ ์ ๋ ฌ(Merge Sort), ํต ์ ๋ ฌ(Quick Sort)์ด ์๋ค. ์ ํ ์ ๋ ฌ ์ ์ผ ๋จผ์ ์ ํ ์ ๋ ฌ์ด๋? ๋ฐฐ์ด์์ ์์ง ์ ๋ ฌ๋์ง ์์ ๋ถ๋ถ์์ ์ต์๊ฐ์ ์ ํํ์ฌ ์ ๋ ฌ๋ ๋ถ๋ถ์ ๋ฐ๋ก ์ค๋ฅธ์ชฝ ์์์ ๊ตํํ..
๐ Knowledge/์๋ฃ๊ตฌ์กฐ
์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๊ณต๋ถํ๊ธฐ ์์, ํ์ ํธ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ? ์ด๋ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๋ํด ์ ๊ทผ, ํ์, ์ฝ์
, ์ญ์ , ๊ฐฑ์ ๋ฑ์ ์ฐ์ฐ์ ์ํํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค. ํ์ ํธ๋ฆฌ์ ์ข
๋ฅ๋ ๊ต์ฅํ ๋ค์ํ์ง๋ง, ์ ์ผ ๊ธฐ๋ณธ์ด๊ณ ์ ํ๋์ด ํ์ต๋์ด์ผ ํ๋ ๋ถ๋ถ์ด ๋ฐ๋ก ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค. (๊ทธ ์ธ์ AVLํธ๋ฆฌ, 2-3 ํธ๋ฆฌ, 2-3-4 ํธ๋ฆฌ, B-ํธ๋ฆฌ, RB-ํธ๋ฆฌ ๋ฑ์ ๋ค๋ฅธ ํฌ์คํ
์ ์ฐธ๊ณ ํ์) ์ด์ง ํ์ ํธ๋ฆฌ ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)๋, ์ด์ง ํ์์ ๊ฐ๋
์ ํธ๋ฆฌ ํํ์ ๊ตฌ์กฐ์ ์ ๋ชฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค. ๐ค ๊ทธ๋ ๋ค๋ฉด ์ด์ง ํ์์ด๋? ์ ๋ ฌ๋ ๋ฐ์ดํฐ์ ์ค๊ฐ์ ์์นํ ํญ๋ชฉ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ ๋ถ๋ถ์ผ๋ก ๋๋์ด ๊ฐ๋ฉฐ ํน์ ํญ๋ชฉ์ ์ฐพ๋ ํ์ ๋ฐฉ๋ฒ์ด๋ค. ๋ค์๋งํด ์ด์ง ํ์ ํธ๋ฆฌ๋, ํธ๋ฆฌ ํํ์ ๊ตฌ์กฐ..
๐ Knowledge/์๋ฃ๊ตฌ์กฐ
AVL ํธ๋ฆฌ AVL ํธ๋ฆฌ๋ ํธ๋ฆฌ๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์น๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ํธ๋ฆฌ ๋์ด์ ๊ท ํ์ ์ ์งํ๋ค๋ ํน์ง์ด ์๋ค. ์ฆ, ์ฝ์
์ด๋ ์ญ์ ์์ ๊ท ํ์ด ์ด๊ธ๋๊ฒ ๋๋ฉด ์ค์ค๋ก ํ์ ์ฐ์ฐ์ ํตํด ๊ท ํ์ ์ ์งํ๋, ์์ฒด ํ๋ง์ด ๊ฐ๋ฅํ ํธ๋ฆฌ์ด๋ค. ์ด๋ฌํ AVL ํธ๋ฆฌ(a.k.a ๊ท ํ ํธ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ํ์, ์ฝ์
, ์ญ์ ์ฐ์ฐ ์์ ๊ท ์ผํ ์ํ ์๊ฐ O(logN)์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ธ๋ฐ, ์ด๋ AVL ํธ๋ฆฌ์ ๋์ด์ ๊ด๊ณ๊ฐ ์๋ค. n๊ฐ์ ๋
ธ๋๋ฅผ ๊ฐ์ง AVL ํธ๋ฆฌ์ ๋์ด๋ O(logN)์ด๋ค. AVL ํธ๋ฆฌ์ ์ ํํ ์ ์๋ฅผ ์์๋ณด์. AVL ํธ๋ฆฌ๋ ์์์ ๋
ธ๋ x์ ๋ํด x์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ๋์ด์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋์ด ์ฐจ์ด๊ฐ 1์ ๋์ง ์๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค. AVL ํธ๋ฆฌ์ ํ์ ์ฐ์ฐ ํ์ ์ฐ์ฐ์ ๊ฒฝ์ฐ AVLํธ๋ฆฌ๋ ํ์ ..
๐ Knowledge/์๋ฃ๊ตฌ์กฐ
์ฐ์ ์์ ํ(Priority Queue) : ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํญ๋ชฉ์ ์ ๊ทผ๊ณผ ์ญ์ , ์์์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํญ๋ชฉ ์ฝ์
์ ์ง์ํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ(Queue)๋ผ๊ณ ํจ์ ๋จผ์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ์๋ฃ๊ตฌ์กฐ์ธ๋ฐ, ์์ ์ฐ์ ์์๊ฐ ๋ถ์ด์ ๋จผ์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ์๋ ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ๊ตฌ์กฐ์ธ๊ฒ์ด๋ค. ํ(Heap)์ด๋ ์ฐ์ ์์ ํ๋ฅผ ์ํด์ ๊ณ ์๋ ์์ ์ด์งํธ๋ฆฌ ํํ์ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ๋ํ ๋ถ๋ชจ์ ์ฐ์ ์์๊ฐ ์์์ ์ฐ์ ์์ ๋ณด๋ค ํฌ๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ด ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๋๋ฐ ํ์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ํ์ ์ข
๋ฅ๋ ๋๊ฐ์ง๊ฐ ์๋ค. ์ต์ ํ(Minimum Heap) : ํค๊ฐ ์์์๋ก ๋์ ์ฐ์ ์์ Key(๋ถ๋ชจ๋
ธ๋) < Key(์์ ๋
ธ๋) ์ต๋ ํ(Maximum Heap) : ํค๊ฐ ํด ..
๐ Knowledge/์๋ฃ๊ตฌ์กฐ
ํด์ ํ
์ด๋ธ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ์
๊ณผ ์ญ์ ์ฐ์ฐ ์ ์ํ ์๊ฐ์ ์ต์ O(logn)์ด ๋์ค๋๋ฐ,(์ด ๊ฒฝ์ฐ๋ AVL ํธ๋ฆฌ) ์ด๋ณด๋ค ๋น ๋ฅธ ์ฐ์ฐ ์๋๋ฅผ ์ํด ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ํด์ ํ
์ด๋ธ์ด๋ค. ํด์ ํ
์ด๋ธ์ ํค์ 1์ฐจ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ๊ด๊ณ๋ฅผ ์ด์ฉํด ํค(ํญ๋ชฉ)์ ์ง์ ํ๋ค. ํค๋ฅผ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ๊ทธ๋ฅ ์ฌ์ฉํ๋ฉด ๋์ง ์๋๊ณ ํ ์ ์์ง๋ง, ์๋ ์์์ฒ๋ผ ํค๋ ์ซ์๊ฐ ์๋ ์ผ๋ จ์ ๋ฌธ์์ด์ผ ์ ์๋ค. ๊ทธ๋ ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ํด์ ํ
์ด๋ธ์ ์ฌ์ฉํ๋ค. ํด์ฑ : ํค๋ฅผ ํด์ ํจ์๋ฅผ ์ฌ์ฉํด ๋ณํํ ํด์ ๊ฐ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์ด์ฉํ์ฌ ํญ๋ชฉ์ ์ ์ฅํ๋ ๊ฒ์ ๋งํ๋ค. ์ฉ์ด ์ ๋ฆฌ๋ฅผ ํ๋ฒ ํด๋ณด์๋ฉด, ํด์ ํจ์๋ ํค๋ค์ ํ
์ด๋ธ์ ์ธ๋ฑ์ค๋ก ๋ณํํ๋ ํจ์์ธ๋ฐ, ์ด๋ ๊ฐ์ฅ ์ด์์ ์ธ ํด์ ํจ์๋ ํค๋ค์ ๊ท ๋ฑํ๊ฒ ์ธ..
๐ Knowledge/์๋ฃ๊ตฌ์กฐ
2-3 ํธ๋ฆฌ 2-3 ํธ๋ฆฌ ์ ์ 2-3 ํธ๋ฆฌ๋ ๋ด๋ถ ๋
ธ๋์ ์ฐจ์๊ฐ 2 ๋๋ 3์ธ ๊ท ํ ํ์ ํธ๋ฆฌ ์ฐจ์๊ฐ 2์ธ ๋
ธ๋๋ 2-๋
ธ๋๋ผ๊ณ ๋ถ๋ฅด๊ณ , ์ฐจ์๊ฐ 3์ธ ๋
ธ๋๋ 3-๋
ธ๋๋ผ๊ณ ๋ถ๋ฅธ๋ค. 2-๋
ธ๋๋ 1๊ฐ์ ํค๋ฅผ ๊ฐ์ง๋ฉฐ, 3-๋
ธ๋๋ 2๊ฐ์ ํค๋ฅผ ๊ฐ์ง๋ค. 2-3 ํธ๋ฆฌ๋ ๋ฃจํธ๋ก๋ถํฐ ๊ฐ ์ดํ๋ฆฌ๊น์ง ๊ฒฝ๋ก์ ๊ธธ์ด๊ฐ ๊ฐ๊ณ , ๋ชจ๋ ์ดํ๋ฆฌ๊ฐ ๊ฐ์ ์ธต์ ์๋ ์์ ๊ท ํ ํธ๋ฆฌ์ด๋ค. 2-3 ํธ๋ฆฌ๊ฐ 2-๋
ธ๋๋ค๋ก๋ง ๊ตฌ์ฑ๋๋ฉด ํฌํ ์ด์ง ํธ๋ฆฌ์ ๋์ผํ ํํ๋ฅผ ๊ฐ์ง๋ค. 2-3 ํธ๋ฆฌ์์ ์ค์ ์ํ๋ฅผ ์ํํ๋ฉด ํค๋ค์ด ์ ๋ ฌ๋๋ค. 2-3 ํธ๋ฆฌ์ ์ฐ์ฐ ํ์ ์ฐ์ฐ ๋ฃจํธ์์ ์์ํ์ฌ ๋ฐฉ๋ฌธํ ๋
ธ๋์ ํค๋ค๊ณผ ํ์ํ๋ ํค๋ฅผ ๋น๊ตํ๋ฉฐ ๋ค์ ๋ ๋ฒจ์ ๋
ธ๋๋ฅผ ํ์ํ๋ค. ์ฝ์
์ฐ์ฐ ๋จผ์ , ํ์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ ์๋ก์ด ํค๊ฐ ์ฝ์
๋ ์ดํ๋ฆฌ๋ฅผ ์ฐพ์์ผ ํ๋ค. ์ดํ๋ฆฌ๋ฅผ ์ฐพ์๋ค..