์ฝ๋ฉ ํ ์คํธ ์ค๋น/์๋ฃ๊ตฌ์กฐ(9)
-
[์๋ฃ๊ตฌ์กฐ] Heap (2)
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฃ๊ตฌ์กฐ์์ Heap ๊ตฌ์กฐ์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ์ด๋ฒ ํผ๋๋ Heap์ ๋๋ฒ์งธ ํผ๋ ์ ๋๋ค. 1ํธ์ ์ ๋ณด์ ๋ถ๋ค์ [์๋ฃ๊ตฌ์กฐ] Heap (1)์ ๊ด์ฌ์ ์ฃผ์ธ์! ๋ํ, ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ Heap ์ญ์ (Max Heap ์์) ๐ Heap Class ๊ตฌํ ๐ Delete ์ฒซ๋ฒ์งธ ํ์ ์ต์๋จ Node (Root Node)๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๊ฒ์ด์์. ์๋ํ๋ฉด ํ์ ๋ณธ๋ ์ฉ๋๊ฐ ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ Root Node์ ๋์ ๋ค ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๋ฐ๋ก ๊บผ๋ด ์ธ ์ ์๋๋ก ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ธ ๊ฒ์ด์์. def pop(self): # heap์ ์๋ Da..
2021.09.06 -
[์๋ฃ๊ตฌ์กฐ] Heap (1)
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฃ๊ตฌ์กฐ์์ Heap ๊ตฌ์กฐ์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ Heap ๊ตฌ์กฐ ๐ Heap (ํ)์ด๋? Data์์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ๊ณ ์๋ Complete Binary Tree (์์ ์ด์ง ํธ๋ฆฌ)์ธ ๊ฒ์ด์์. ๊ทธ๋ผ ์์ ์ด์ง ํธ๋ฆฌ๊ฐ ๋ฌด์์ผ๊น์? Node๋ฅผ ์ฝ์ ํ ๋, ์ต ํ๋จ ์ผ์ชฝ Node๋ถํฐ ์ฐจ๋ก๋๋ก ์ฝ์ ํ๋ ๊ฒ์ ๋งํ๋ต๋๋ค! ๐ ํ์ ์ฌ์ฉํ๋ ์ด์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด $O(n)$์ด ๊ฑธ๋ฆฐ๋ค. ์ด์ ๋ฐํด, ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐพ์ผ๋ฉด, $O(logn)$์ด ๊ฑธ๋ฆฐ๋ค. ์ฐ์ ์์ ํ์ ๊ฐ์ด..
2021.09.06 -
[์๋ฃ๊ตฌ์กฐ] Tree ๊ตฌ์กฐ(1)
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฃ๊ตฌ์กฐ์์ Tree ๊ตฌ์กฐ์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. ๋ํ๊ต ๊ฐ์ ์๊ฐ์ ์ฐธ ์ดํด๊ฐ ์ ๊ฐ๋ ๊ฒ๋ค ์ค ํ๋์๋๋ฐ, ๋ค์ ํ๋ฒ ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ Tree ๊ตฌ์กฐ Tree๋ Node์ Branch๋ฅผ ์ด์ฉํ์ฌ Cycle์ด ์ด๋ค์ง์ง ์๋๋ก ๊ตฌ์ฑํ Data ๊ตฌ์กฐ์ธ ๊ฒ์ด์์. Git์ ์ฌ์ฉํด ๋ณด์ จ๋ค๋ฉด Branch ๋ง์ด ๋ค์ด๋ณด์ จ์ง์? ๊ทธ๋ ๋ค๋ฉด ์ด๋์ ๋ง์ด ์ฌ์ฉ๋ ๊น์? Tree ๊ตฌ์กฐ ์ค Binary Tree(์ด์ง ํธ๋ฆฌ) ํํ์ ๊ตฌ์กฐ๋ก, ํ์(๊ฒ์) ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ์ ์ํด ๋ง์ด ์ฌ์ฉ๋๋ต๋๋ค! ๐ ์ฉ์ด ์ ๋ฆฌ Node : Tree์์ ์ค์ง์ ์ผ๋ก Data..
2021.08.29 -
[์๋ฃ๊ตฌ์กฐ] Tree ๊ตฌ์กฐ(2)
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฃ๊ตฌ์กฐ์์ Tree ๊ตฌ์กฐ ๋๋ฒ์งธ ๊ณต๋ถ๋ฅผ ์์ ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! ์์ค ์ฝ๋์ ๋ํด์ ํ์ธ ํ๊ณ ์ถ์ผ์ ๋ถ๋ค๊ป์๋ ์ฃผ๋ํ๋์ Git hub์ ๊ด์ฌ์ ์ฃผ์ธ์! ๋ณธ ํผ๋๋ [์๋ฃ๊ตฌ์กฐ] Tree ๊ตฌ์กฐ(1)์ ์ฐ์ฅ์ด๋ฉฐ, ํด๋น ํผ๋๋ฅผ ๋จผ์ ํ์ธํ์๊ณ , ์ด ํผ๋๋ฅผ ํ์ธํ์๋ ๊ฑธ ์ถ์ฒ ๋๋ฆด๊ฒ์! ๐ Binary Search Tree Node Delete (์ด์ง ํ์ ํธ๋ฆฌ ๋ ธ๋ ์ญ์ ) ๐ Case 3-1 ๐์ญ์ ํ Node๊ฐ Child Node๋ฅผ ๋ ๊ฐ ๊ฐ์ง๊ณ ์์ ๊ฒฝ์ฐ (์ญ์ ํ Node๊ฐ Parent Node ์ผ์ชฝ์ ์์ ๋) ๊ธฐ๋ณธ ์ฌ์ฉ ์ ๋ต ์ญ์ ํ Node์ ์ค๋ฅธ์ชฝ ์์ ์ค, ๊ฐ์ฅ ์์ ๊ฐ์ ์ญ์ ํ Node์ Parent Node๊ฐ ๊ฐ๋ฅดํค๋๋ก ํ๋ค. ์ญ์ ..
2021.08.29 -
[์๋ฃ๊ตฌ์กฐ] 05. Hash Table
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์์ Hash Table์ ๋ํด์ ๊ณต๋ถ ํด ๋ณด๋๋ก ํ ๊ฒ์ด์์! ์ ๊ฐ ์์ฑํ ์ฝ๋๊ฐ ๊ถ๊ธํ์๋ค๋ฉด? ์ฃผ๋ํ๋์ ๊น ํ๋ธ์ ๊ด์ฌ์ ์ฃผ์ธ์! ํด์ ํจ์์ ๋ํ ๊ฐ๋ ์ ์ ๋ชจ๋ฅด์ ๋ค๋ฉด [์ ๋ณด๋ณด์] ํด์ํจ์ ๊ฐ๋ ์ ๊ด์ฌ์ ์ฃผ์ธ์! ๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค! ๐ Hash Table ๐ Hash ๊ตฌ์กฐ Hash Table์ Key์ Data๋ฅผ ์ ์ฅํ๋ Data ๊ตฌ์กฐ์ธ ๊ฒ์ด์์. JAVA๋ก ๋ณด๋ฉด Hash Map์ด ๋ ๊ฒ์ด๊ณ , Python์์๋ Dictionary ๊ตฌ์กฐ๊ฐ ๋ ๊ฒ์ด์์! Key๋ฅผ ํตํด ๋ฐ๋ก Data๋ฅผ ๋ฐ์์ฌ ์ ์์ผ๋ฏ๋ก, ์๋๊ฐ ํ๊ธฐ์ ์ผ๋ก ๋น ๋ฅด๋ค Python Dictionary(์ฌ์ ) Type Hash Table Exam : Key๋ฅผ ๊ฐ์ง๊ณ ๋ฐ๋ก Value๋ฅผ ๊บผ๋ธ..
2021.08.27 -
[์๋ฃ๊ตฌ์กฐ] 04. Linked List
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฃ๊ตฌ์กฐ์์ ๋งํฌ๋ ๋ฆฌ์คํธ(์ฐ๊ฒฐ ๋ฆฌ์คํธ)์ ๋ํด์ ๊ณต๋ถ ํด ๋ณด๋๋ก ํ ๊ฒ์ด์์! ์ ๊ฐ ์์ฑํ ์ฝ๋๊ฐ ๊ถ๊ธํ์๋ค๋ฉด? ์ฃผ๋ํ๋์ ๊น ํ๋ธ์ ๊ด์ฌ์ ์ฃผ์ธ์! ๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค! ๐ Linked List ( ์ฐ๊ฒฐ List ) ๋ฐฐ์ด์ ์์ฐจ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ณต๊ฐ์ Data๋ฅผ ๋ํ๋ธ ๊ตฌ์กฐ์ง๋ง, Linked List๋ ๊ณต๊ฐ์ด ๋จ์ด์ ธ ์์ด๋ Data๋ฅผ ๊ฐ์์ ํ์ดํ๋ก ์ฐ๊ฒฐํด์ ๊ด๋ฆฌํ๋ Data์ ๊ตฌ์กฐ์ธ ๊ฒ์ด์์. ๋ณธ๋ C์ธ์ด์์๋ ์ฃผ์ํ Data ๊ตฌ์กฐ์ง๋ง, Python์ List Type์ด Linked List๋ฅผ ๋ชจ๋ ์ง์ํ๋ต๋๋ค! ๐ Linked List ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ์ฉ์ด Node(๋ ธ๋) : Data ์ ์ฅ ๋จ์ (Data Value, Pointer)๋ก ๊ตฌ์ฑ Pointer(ํฌ์ธํฐ..
2021.08.15