728x90 ๋ฐ์ํ ๐ฅ Computer Science/Data Structure10 [Data Structure] Trie๋? (feat. ์ด๋ก ) ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ์ฐ๊ฒฐ๋ ๋ฌธ์์ด์ ํจ์จ์ ์ผ๋ก ์ ์ฅํด ๊ฒ์์ ํจ์จ์ ์ผ๋ก ๋์์ฃผ๋ ์๋ฃ๊ตฌ์กฐ์ธ ํธ๋ผ์ด(Trie)์ ๋ํด ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ Trie๋? ํธ๋ผ์ด(trie)๋ ์ปดํจํฐ ๊ณผํ์์ ํ์ ํธ๋ฆฌ์ ์ผ์ข ์ด๋ค. ๋์ ์งํฉ์ด๋ ์ฐ๊ด ๋ฐฐ์ด์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํธ๋ฆฌ ์๋ฃ ๊ตฌ์กฐ์ด๋ค. ์ฃผ๋ก ๋ฌธ์์ด์ด ํค์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ฌ๋ฆฌ ํธ๋ฆฌ์ ์ด๋ค ๋ ธ๋๋ ๊ทธ ๋ ธ๋ ์์ฒด์ ์ฐ๊ด๋ ํค๋ ์ ์ฅํ์ง ์๋๋ค. ๋์ ๋ ธ๋๊ฐ ํธ๋ฆฌ์์ ์ฐจ์งํ๋ ์์น๊ฐ ์ฐ๊ด๋ ํค๋ฅผ ์ ์ํ๋ค. ์ฆ, ํค์ ๊ฐ์ ์๋ฃ ๊ตฌ์กฐ ์ ์ฒด์ ๋ถ์ฐ๋๋ค. ๋ ธ๋์ ๋ชจ๋ ์์์ ๋ ธ๋์ ์ฐ๊ด๋ ๋ฌธ์์ด์ ๊ณตํต ์ ๋์ฌ๋ฅผ ๊ณต์ ํ๋ค. ๋ฃจํธ๋ ๋น ๋ฌธ์์ด์ ์ฐ๊ด๋๋ค. - ์ํค ๋ฐฑ๊ณผ - ์ฆ, ํธ๋ฆฌ ํํ๋ก ์ฐ๊ฒฐ๋ ๋ฌธ์์ด์ ์ฐจ๋ก๋ก ์ ์ฅํ๋.. 2022. 7. 29. [Data Structure] B-Tree๋? ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ ์ค ๊ท ํ ๋ํ์ (์ด๋ฆ ์์ฒด๊ฐ Balanced - Tree)์ธ B-Tree์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ B-Tree์ ๋ฐฐ๊ฒฝ B-ํธ๋ฆฌ(B-tree)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ผ ์์คํ ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ์ผ์ข ์ผ๋ก, ์ด์ง ํธ๋ฆฌ๋ฅผ ํ์ฅํด ํ๋์ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์์ ๋ ธ๋์ ์ต๋ ์ซ์๊ฐ 2๋ณด๋ค ํฐ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. - ์ํค ๋ฐฑ๊ณผ - ์ฆ, ์ด์ง ํธ๋ฆฌ๋ฅผ ์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ํ์ฅํ ์๋ฃ๊ตฌ์กฐ์์! ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ต์ ์ ๊ฒฝ์ฐ O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ๋ง๋ ๊ฒ์ด O(logn)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ AVL ํธ๋ฆฌ์์ต๋๋ค. ํ์ง๋ง ๋ง์ฝ 2์ฒ๋ง๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด log20,000,000 = 24 ์ฆ, ์ต๋ 2.. 2021. 12. 6. [Data Structure] AVL ํธ๋ฆฌ ๊ตฌํํด๋ณด๊ธฐ (feat. Swift) ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ ๋ฒ ์๊ฐ์ AVL ํธ๋ฆฌ๊ฐ ๋ญ์ง ์ด๋ก ์ ๋ํด ์์๋ณด์๋๋ฐ์. (ํน์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ํ์ธํด์ฃผ์ธ์!) ์ค๋์ AVL ํธ๋ฆฌ๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ AVLNode ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์งํ์ํธ๋ฆฌ์ ๋ ธ๋์ ๋๊ฐ์ง๋ง ์ผ์ชฝ๊ณผ,์ค๋ฅธ์ชฝ ์์์ ๋์ด์ ๋ฐธ๋ฐ์ค ํฉํฐ๋ฅผ ์ธก์ ํ ๋ณ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์์ต๋๋ค. class AVLNode { var value:T var leftChild:AVLNode? var rightChild:AVLNode? var height:Int = 0 var leftHeight:Int { return leftChild?.height ?? -1 } var rightHeight:Int { return rightChild?.height ?? -1 } var.. 2021. 12. 6. [Data Structure] AVL(Adelson-Velsky and Landis) ํธ๋ฆฌ๋? ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ์ ๋ฒ์ ์ ๋ฆฌํ๋ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๋ ์ ๊ทธ๋ ์ด๋(?)ํ ์๋ฃ๊ตฌ์กฐ์ธ AVL ํธ๋ฆฌ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. (ํน์ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ํด ๋ชจ๋ฅด์๋ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ๋ณด๊ณ ์์ฃผ์ธ์!) ๋ฐ๋ก ์์ํ ๊ฒ์~ AVL(Adelson-Velsky and Landis) ํธ๋ฆฌ๋? ๐ค ์ปดํจํฐ ๊ณผํ์์ AVL ํธ๋ฆฌ(๋ฐ๋ช ์์ ์ด๋ฆ์ธ Adelson-Velsky and Landis์์ ๋ฐ์จ ์ด๋ฆ)๋ ์ค์ค๋ก ๊ท ํ์ ์ก๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค. ์ค์ค๋ก ๊ท ํ์ ์ก๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ์ฒ์์ผ๋ก ๋ฐ๋ช ๋์๋ค. AVL ํธ๋ฆฌ์์, ๋ ์์ ์๋ธํธ๋ฆฌ์ ๋์ด๋ ํญ์ ์ต๋ 1๋งํผ ์ฐจ์ด๋๋ค. ๋ง์ฝ ์ด๋ค ์์ ์์ ๋์ด ์ฐจ์ด๊ฐ 1๋ณด๋ค ์ปค์ง๋ฉด ์ด ์์ฑ์ ์ ์งํ๊ธฐ ์ํด์ ์ค์ค๋ก ๊ท ํ์ ์ก๋๋ค. - ์ํค ๋ฐฑ๊ณผ - ์ฆ, .. 2021. 12. 1. [Data Structure] ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree) ๊ตฌํํด๋ณด๊ธฐ (feat.Swift) ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ ๋ฒ ์๊ฐ์ ์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ๋ญ์ง ์ด๋ก ์ ๋ํด ์์๋ณด์๋๋ฐ์. ์ค๋์ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ BSTNode ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ ธ๋๋ฅผ ๋ง๋ค์ด ์ฃผ๊ฒ ์ต๋๋ค. ๋ ธ๋๋ ๊ฐ,์ผ์ชฝ,์ค๋ฅธ์ชฝ ์์์ ๋ ธ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. class BSTNode { var value:T var leftChild:BSTNode? var rightChild:BSTNode? init(value:T) { self.value = value } } Binary Search Tree ์ด์ง ํ์ ํธ๋ฆฌ์ ์ต์๋จ ๊ฐ์ ๊ฐ์ง root๋ฅผ ํ๋กํผํฐ๋ก ์ ์ํ์ต๋๋ค. struct BinarySearchTree { var root:BSTNode? Insert public mutatin.. 2021. 11. 18. [Data Structure] ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)๋? ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ ์ค ํจ์จ์ ์ธ ๊ฒ์,์ฝ์ ,์ญ์ ๋ฅผ ํ ์ ์๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ ์ด์ง ํธ๋ฆฌ(Binary Tree)๋? ๐ค ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ด์ง ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ๋จผ์ ์ด์ง ํธ๋ฆฌ๊ฐ ๋ญ์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ด์ง ํธ๋ฆฌ๋ ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ํธ๋ฆฌ ์๋ฃ ๊ตฌ์กฐ๋ก, ์์ ๋ ธ๋๋ฅผ ๊ฐ๊ฐ ์ผ์ชฝ ์์ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ผ๊ณ ํ๋ค.... - ์ํค ๋ฐฑ๊ณผ - ์ฆ, ๋ ธ๋๋ง๋ค ์์์ด 2๊ฐ ์ดํ์ธ ํธ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค. ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์ด๋ฃจ์ด์ง ํธ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค. (์์์ด ์์ด๋ ๋๊ณ , ํ๋์ฌ๋ ๋๊ณ , ๋ ๊ฐ์ฌ๋ ๋ฉ๋๋ค.) ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)๋? ๐ง ์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์.. 2021. 11. 17. [Data Structure] ํด์ฌ ํ ์ด๋ธ(Hash Table) ๊ตฌํํด๋ณด๊ธฐ(feat. Swift) ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ์ ๋ฒ ๊ธ์์ ํด์ฌ ํ ์ด๋ธ์ ์ด๋ก ์ ์ด์ด์ ์ง์ ๊ตฌํํด ๋ณด๋ ค๊ณ ํฉ๋๋ค! (ํน์ ์ ๋ฒ ๊ธ์ ์๋ณด์ จ๋ค๋ฉด ์ฌ๊ธฐ ๋ฅผ ํตํด์ ๋ณด๊ณ ์์ฃผ์ธ์~) ๋ฐ๋ก ์์ํ ๊ฒ์~ HashTable ๋จผ์ ์ ๋ ํด์ฌ ํจ์๋ฅผ Digit Folding ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ๋ง๋ค ๊ฒ์ด๊ธฐ ๋๋ฌธ์ key๊ฐ์ String์ผ๋ก ์ค์ ํ์ต๋๋ค. ๋ํ ์ถฉ๋์ด ๋ฌ์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก Chaining ๊ธฐ๋ฒ์ ์ฌ์ฉํ์์ง๋ง ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ต๋๋ค. ์๋์ ๊ฐ์ด typealias๋ก ๋ณ์นญ์ ์ค์ ํด์ฃผ๊ณ ๋ฒํท์ ์ด์ค๋ฐฐ์ด๋ก ์ ์ธํ์ต๋๋ค. public struct HashTable { public typealias Key = String private typealias Element = (key:Key,value:Val.. 2021. 11. 16. [Data Structure] ํด์ฌ ํ ์ด๋ธ(Hash Table)์ด๋? (feat. ์ด๋ก ) ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์ค๋์ ์ฐ๋ฆฌ๊ฐ ์์ฃผ ํํ๊ฒ ์ฌ์ฉํ๊ณ ์๋ ํด์ฌ ํ ์ด๋ธ, Swift๋ก ๋งํ๋ฉด ๋์ ๋๋ฆฌ์ ๋ํด์ ์์๋ณผ ๊ฑฐ์์! ์ด๋ฏธ ๊ตฌํ๋์ด ์๋ ์ฝ๋๋ก ์ฝ๊ฒ ์ฌ์ฉํ๋๋ฐ ์ง์ ๊ตฌํํ๋ ค๊ณ ํ๋ ์ง์ง ๋ณต์กํ๋๋ผ๊ตฌ์. ๊ทธ๋์ ์ค๋์ ํด์ฌ ํ ์ด๋ธ์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ ํด์ฌ ํ ์ด๋ธ(Hash Table)์ด๋? ์ ์๋ ์๋์ ๊ฐ์ต๋๋ค. ํด์ ํ ์ด๋ธ์ ์ปดํจํ ์์ ํค๋ฅผ ๊ฐ์ ๋งคํํ ์ ์๋ ๊ตฌ์กฐ์ธ, ์ฐ๊ด ๋ฐฐ์ด ์ถ๊ฐ์ ์ฌ์ฉ๋๋ ์๋ฃ ๊ตฌ์กฐ์ด๋ค. ํด์ ํ ์ด๋ธ์ ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ธ(index)์ ๋ฒํท(bucket)์ด๋ ์ฌ๋กฏ(slot)์ ๋ฐฐ์ด๋ก ๊ณ์ฐํ๋ค. - ์ํค ๋ฐฑ๊ณผ - ์ฆ, key์ value๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. key๊ฐ์ผ๋ก value๋ฅผ ํ ๋ฒ์ ์ฐพ์ .. 2021. 11. 15. [Data Structure] ํ(Heap)์ด๋? (feat. Swift) ์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค! ์์ฆ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๊ณ ์๋๋ฐ ๊ทธ ์ค ํ์ํธ์ ๋ํด ์๊ฒ ๋์์ต๋๋ค. ํ์ํธ๋ฅผ ํ๋ ค๋ฉด ํ์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ํ์ํ๋๋ผ๊ตฌ์. ๊ทธ๋์ ํ์ด ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง์ ๋ํด ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ ์์ ์ด์งํธ๋ฆฌ(Complete Binary Tree)๋? โ ๋จผ์ ํ์ ๋ํด ์์๋ณด๊ธฐ ์ ์ ์์ ์ด์งํธ๋ฆฌ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ์ด์ ๋ ํ์ด ์์ ์ด์งํธ๋ฆฌ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ ์ด์ง ํธ๋ฆฌ์์, ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ๊ณ ๋ชจ๋ ๋ ๋ฒจ์ด ์์ ํ ์ฑ์์ ธ ์์ผ๋ฉฐ, ๋ง์ง๋ง ๋ ๋ฒจ์ ๋ชจ๋ ๋ ธ๋๋ ๊ฐ๋ฅํ ํ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ค. ๋ง์ง๋ง ๋ ๋ฒจ h ์์ 1๋ถํฐ 2h-1 ๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. ์์ ์ด์ง ํธ๋ฆฌ๋ ๋ฐฐ์ด์ ์ฌ์ฉํด ํจ์จ์ ์ผ๋ก ํํ ๊ฐ๋ฅํ๋ค. - ์ํค ๋ฐฑ๊ณผ - ์ฆ, ๋งจ ๋ง์ง๋ง.. 2021. 10. 15. [Data Structure] ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ํด ์์๋ณด์(Linked List) ์๋ ํ์ธ์ Foma๐ ์ ๋๋ค. ์ค๋์ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ํด์ ์์๋ณด๋ ค๊ณ ํ๋๋ฐ์. ์ผ๋ง ์ ์ 2021 ์นด์นด์ค ์ธํด์ฝ์ ์ถ์ ๋์๋ "ํํธ์ง" ์ด๋ผ๋ ๋ฌธ์ ๋ฅผ ํ๊ฒ ๋์๋๋ฐ ํด๋น ๋ฌธ์ ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ผญ ์ฌ์ฉํด์ผ ํจ์จ์ฑ์ ํต๊ณผํ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค. ๊ทธ ๋์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด๋ณผ ์ผ์ด ๊ฑฐ์ ์์ด์ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณธ ์ ์ด ์์๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฅ์ ๊ณผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Linked List๋? "์ฐ๊ฒฐ ๋ฆฌ์คํธ, ๋งํฌ๋ ๋ฆฌ์คํธ(linked list)๋ ๊ฐ ๋ ธ๋๊ฐ ๋ฐ์ดํฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ํ ์ค๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ์ด๋ค. ์ด๋ฆ์์ ๋งํ๋ฏ์ด ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๋ ธ๋๋ค์ด ์ฐ๊ฒฐ๋์ด ์๋๋ฐ, ๋ ธ๋์ ํฌ์ธํฐ๊ฐ ๋ค์์ด๋ ์ด์ ์ ๋ ธ๋์์ ์ฐ๊ฒฐ์.. 2021. 8. 11. ์ด์ 1 ๋ค์ 728x90 ๋ฐ์ํ