๐ Computer Science/Data Structure10 [์๋ฃ๊ตฌ์กฐ] ํด์ ํ ์ด๋ธ(Hash Table) ํด์ ํ ์ด๋ธ(Hash Table) ํด์ ํ ์ด๋ธ์ (Key, Value)์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ ํด์ํจ์(Hash Function)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํํ ๊ฐ์ index๋ก ์ผ์ ํด์ ํจ์(Hash Function)๋ฅผ ์ฌ์ฉํด Key ๊ฐ์ ์์ธ(index)์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ํด์ฑ(Hashing)์ด๋ผ๊ณ ํจ ๋ํ์ ์ธ ์๋ก ํ์ด์ฌ์ dictionary, ๋ฃจ๋น์ Hash, ์๋ฐ์ Map ๋ฑ์ด ์์ ํด์ ํ ์ด๋ธ์ ํน์ง ๊ธฐ๋ณธ ์ฐ์ฐ์ผ๋ก๋ search, insert, delete๊ฐ ์์ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ key๋ฅผ ํตํด์ value๋ฅผ ์ป์ ์ ์์ => ์ด์งํ์ํธ๋ฆฌ๋ ๋ฐฐ์ด์ ๋นํด ์๋๊ฐ ๋น ๋ฆ ์ปค๋ค๋ ๋ฐ์ดํฐ๋ฅผ ํด์ํด์ ์งง์ ๊ธธ์ด๋ก ์ถ์ฝํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋ ํจ์จ์ value๋ ์ค๋ณต ๊ฐ๋ฅํ.. 2023. 3. 15. [์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ(Priority Queue) ์ฐ์ ์์ ํ(Priority) ์์์ ์๊ด์์ด ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ํํ์ ์๋ฃ๊ตฌ์กฐ ์ฐ์ ์์ ๋๊ธฐ์ด์ด๋ผ๊ณ ๋ ํจ ๋๊ธฐ์ด์์ ์ฐ์ ์์๊ฐ ๋์ ์์๊ฐ ์ฐ์ ์์๊ฐ ๋ฎ์ ์์๋ณด๋ค ๋จผ์ ์ ๊ณต๋๋ ์๋ฃ๊ตฌ์กฐ ์ผ๋ฐ์ ์ผ๋ก ํ(Heap)์ ์ฌ์ฉํ์ฌ ๊ตฌํ ๋ชจ๋ ํญ๋ชฉ์๋ ์ฐ์ ์์๊ฐ ์์ ์ฐ์ ์์๊ฐ ๋์ ์์๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ์์๋ณด๋ค ๋จผ์ ํ์์ ์ ์ธ ๋ ์์์ ์ฐ์ ์์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ํ์ ์์์ ๋ฐ๋ผ ์ ๊ณต ์ฐ์ ์์ ํ ๊ตฌํ ๋ฐฉ๋ฒ ๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ, ํ์ ์ด์ฉํ์ฌ ๊ตฌํ ๊ฐ๋ฅ ๊ตฌํ ๋ฐฉ๋ฒ ์ฝ์ (enqueue) ์ญ์ (denqueue) ๋ฐฐ์ด (unsorted array) O(1) O(N) ์ฐ๊ฒฐ ๋ฆฌ์คํธ (unsorted linked list) O(1) O(N) ์ ๋ ฌ๋ ๋ฐฐ์ด (sorted array) O(N) O(1) .. 2023. 3. 13. [์๋ฃ๊ตฌ์กฐ] ํ(Heap) ํ(Heap) ์์ ์ด์งํธ๋ฆฌ ๊ธฐ๋ฐ์ ์๋ฃ๊ตฌ์กฐ ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ค ์ค์์ ์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๋๋ก ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ ์ฐ์ ์์ ํ๋ฅผ ์ํด ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ ๋ฐ์ ๋ ฌ์ํ(๋์จํ ์ ๋ ฌ์ํ) ์ ์ง ํฐ ๊ฐ์ด ์์์ ์๊ณ ์์ ๊ฐ์ด ํ์์ ์๋ ์ ๋ ์ค๋ณต๋ ๊ฐ ํ์ฉ ํ์ ์ข ๋ฅ ์ต๋ ํ(max heap) ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์ ์ด์งํธ๋ฆฌ ์ต์ ํ(min heap) ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ด์งํธ๋ฆฌ ํ์ ํ์ฉ ์๋ฎฌ๋ ์ด์ ์์คํ ๋คํธ์ํฌ ํธ๋ํฝ ์ ์ด ์ด์ ์ฒด์ ์์์ ์์ ์ค์ผ์ฅด๋ง ์์น ํด์์ ์ธ ๊ณ์ฐ ํ์ ๊ตฌํ ํ์ ์ ์ฅํ๋ ํ์ค์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ ๋ฐฐ์ด ๊ตฌํ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ธ 0์ ์ฌ์ฉ๋์ง ์์ ํน์ ์์น์ ๋ ธ๋ ๋ฒํธ๋ ์๋ก์ด.. 2023. 3. 13. [์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ(Tree) ํธ๋ฆฌ(Tree) ๋ ธ๋๋ค์ด ๋๋ฌด ๊ฐ์ง์ฒ๋ผ ์ฐ๊ฒฐ๋ ๋น์ ํ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ ๊ณ์ธต์ ์ธ ์๋ฃ๋ฅผ ํํํ๋๋ฐ ์ด์ฉ ๋ ธ๋(node)๋ค๊ณผ ๋ ธ๋๋ค์ ์ฐ๊ฒฐํ๋ ๊ฐ์ (edge)๋ค๋ก ๊ตฌ์ฑ ํ๋์ ๋ฃจํธ๋ ธ๋๋ฅผ ๊ฐ์ง ํธ๋ฆฌ์ ๊ด๋ จ๋ ์ฉ์ด ๋ ธ๋(node) ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ธฐ๋ณธ์์ ๋ ธ๋์๋ ํค ๋๋ ๊ฐ๊ณผ ํ์ ๋ ธ๋์ ๋ํ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ ๊ฐ์ (edge) ๋ ธ๋์ ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ์ (link, branch๋ผ๊ณ ๋ ๋ถ๋ฆ) ๋ฃจํธ ๋ ธ๋(root node) ๋ถ๋ชจ๊ฐ ์๋ ์ต์์ ๋ ธ๋, ํธ๋ฆฌ๋ ํ๋์ ๋ฃจํธ ๋ ธ๋๋ง์ ๊ฐ์ง (A) ๋ถ๋ชจ ๋ ธ๋(parent node) ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ๋ ธ๋ (H, I์ ๋ถ๋ชจ ๋ ธ๋๋ D) ์์ ๋ ธ๋(child node) ๋ถ๋ชจ ๋ ธ๋์ ํ์ ๋ ธ๋ (๋ ธ๋ D์ ์์ ๋ ธ๋๋ H, I) ํ์ ๋ ธ๋(sibling node) ๊ฐ์.. 2023. 3. 9. [์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ(Graph) ๊ทธ๋ํ(Graph) ์ฐ๊ฒฐ๋์ด์๋ ์์๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ ์๋ฃ๊ตฌ์กฐ ๋ ธ๋(Node)์ ๊ทธ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ (Edge)์ ํ๋๋ก ๋ชจ์ ๋์ ์๋ฃ๊ตฌ์กฐ ๊ทธ๋ํ ๊ด๋ จ ์ฉ์ด ์ ์ (vertex): ์์น๋ผ๋ ๊ฐ๋ (node ๋ผ๊ณ ๋ ๋ถ๋ฆ) ๊ฐ์ (edge): ์์น ๊ฐ์ ๊ด๊ณ, ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ (link, branch ๋ผ๊ณ ๋ ๋ถ๋ฆ) ์ธ์ ์ ์ (adjacent vertex): ๊ฐ์ ์ ์ ํด ์ง์ ์ฐ๊ฒฐ๋ ์ ์ ์ ์ ์ ์ฐจ์(degree): ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์์ ํ๋์ ์ ์ ์ ์ธ์ ํ ์ ์ ์ ์ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ์กด์ฌํ๋ ์ ์ ์ ๋ชจ๋ ์ฐจ์์ ํฉ = ๊ทธ๋ํ์ ๊ฐ์ ์์ 2๋ฐฐ ์ง์ ์ฐจ์(in-degree): ๋ฐฉํฅ ๊ทธ๋ํ์์ ์ธ๋ถ์์ ์ค๋ ๊ฐ์ ์ ์ (๋ด์ฐจ์ ๋ผ๊ณ ๋ ๋ถ๋ฆ) ์ง์ถ ์ฐจ์(out-degree): ๋ฐฉํฅ ๊ทธ๋ํ์์ ์ธ๋ถ๋ก ํฅํ๋ .. 2023. 3. 8. [์๋ฃ๊ตฌ์กฐ] Time Complexity (์๊ฐ ๋ณต์ก๋) Time Complexity (์๊ฐ ๋ณต์ก๋) ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ๊ฐ๊ณผ ์ฐ์ฐ ์ํ ์๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ์ฒ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ์ ๋ ฅ์ ํจ์ ๊ด๊ณ ์๊ณ ๋ฆฌ์ฆ์ ๋ก์ง์ด ์ผ๋ง๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋์ง ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ ์๊ณ ๋ฆฌ์ฆ์ ๋ก์ง์ ์ฝ๋๋ก ๊ตฌํํ ๋, ํจ์จ์ ์ผ๋ก ๊ตฌํํ๊ธฐ์ํด ๊ณ ๋ คํด์ผ ํจ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ: ์ ๋ ฅ๊ฐ์ด ์ปค์ง์ ๋ฐ๋ผ ์ฆ๊ฐํ๋ ์๊ฐ์ ๋น์จ์ ์ต์ํํ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์ฑ ์ฃผ๋ก ๋น -์ค ํ๊ธฐ๋ฒ์ ์ฌ์ฉํด ๋ํ๋ ์๊ฐ ๋ณต์ก๋๋ฅผ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ Big-O(Big-Oh, ๋น -์ค) ⇒ ์ํ ์ ๊ทผ, ์ต์ ์ ๊ฒฝ์ฐ์ ๋ํด ๋ํ๋ด๋ ๋ฐฉ๋ฒ Big-Ω(Big-Omega, ๋น -์ค๋ฉ๊ฐ) ⇒ ํํ ์ ๊ทผ, ์ต์ ์ ๊ฒฝ์ฐ์ ๋ํด ๋ํ๋ด๋ ๋ฐฉ๋ฒ Big-θ(Big-Theta, ๋น -์ธํ) ⇒ ๋น ์ค์ ๋น ์ค๋ฉ๊ฐ์ ๊ณตํต๋ถ.. 2023. 3. 7. ์ด์ 1 2 ๋ค์ ๋ฐ์ํ