์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด, ๊ตฌ๊ธ์ ์ฌ๋ฌ ์ฝ๋๋ค์ ๋ณด์์ง๋ง, ๋ฐ์ดํฐ ํ์ ์ ์๊ด์์ด ์ฌ์ฉํ ์ ์๋ ์ฝ๋๋ ์์๋ค. ์ด์ ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ๋์ ์๋ฆฌ๋ ์ดํด๋ณด๋ค๋, ๊ตฌํ์ ์ค์ ์ผ๋ก ๊ธ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. BST? Binary search tree - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Data structure in tree form sorted for fast lookup A binary search tree of size 9 and depth 3, with 8 at the root. The leaves are not drawn. In computer science, a binary s..
ํด์์ ๋ํ ๊ฐ๋ ๋ณด๋ค๋ C๋ก ํด์๋ฅผ ๊ตฌํํ๊ณ , data type์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ตฌํ์ ์ธก๋ฉด์์ ํด์๋ฅผ ๋ค๋ฃจ๊ณ ์ ํ๋ค. key-value pair๋ฅผ ๊ตฌ์กฐ์ฒด์์ ๋ณ๋๋ก ๋ช ์ํ์ง ์๊ณ , entry์ ๋ค๋ฅธ ๊ตฌ์กฐ์ฒด๋ฅผ ํฌ์ธํ ํจ์ผ๋ก์จ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ค๋ฃฐ ์ ์๋๋ก ๊ตฌํํ์๋ค. Hash? ํด์๋ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด, key ๊ฐ์ ์์ฑํ๋ `ํด์ ํจ์(hash function)`๋ฅผ ํตํด ๋ฐฐ์ด์ ์ด๋ค ๊ฐ์ด ์๋์ง ์ฆ๊ฐ์ ์ ์ฐพ์ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํธ๋ฆฌ์ ๊ฒฝ์ฐ ํ์ชฝ์ผ๋ก ํ์์ ํ์ฌ ๋ฒ์๋ฅผ ์ขํ๊ฐ๋ฉด์ ํ์์ ํ๋ค. ํ์ง๋ง ํด์์ ๊ฒฝ์ฐ ํด์ ํจ์๋ฅผ ํตํด, ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ key๋ฅผ ์ฆ๊ฐ์ ์ผ๋ก ์ ์ ์์ผ๋ฏ๋ก ํ์์ ๋งค์ฐ ํจ์จ์ ์ธ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ์ง๋ง ํด์์์๋ ๋ฌธ์ ์ ์ ์๋ค. `์ถฉ๋(Collision)`์ด ๋ฐ..
์ ๋ ฌ ๋ฐฉ์ ์์ฃผ ์ฌ์ฉํ๋ ์ ๋ ฌ ๋ฐฉ์์ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋ ์ ์๋ค. ์ฒซ ๋ฒ์งธ๋ก 2์ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ Bubble, Select, Insert ์ ๋ ฌ์ด๋ค. ๋ ๋ฒ์งธ๋ ๋ถํ -์ ๋ณต ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๋ณํฉ, ํต ์ ๋ ฌ์ด๋ค. 2์ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ์ ๋ ฌ ๋ฐฉ์ ํด๋น ๋ฐฉ์์ ์ต์ ์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๋ O(N^2)์ด ๋๋ค. ์ด์ ๊ฐ์ ์ด์ ๋ 2๊ฐ์ ๋ฐ๋ณต๋ฌธ์ ํตํด ๊ฐ์ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ด๋ค. Bubble Sort ์๋ก ์ธ์ ํ ๋ ์์๋ฅผ ๊ฒ์ฌํ์ฌ ์ ๋ ฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. swap์ด ๋ ์ด์ ๋ฐ์ํ์ง ์์ผ๋ฉด, ์ค๋จํ์ฌ ๋ถํ์ํ ๋ฐ๋ณต๋ฌธ์ ์คํํ์ง ์์ ์ ์๋ค. def bubble_sort(nums): for i in range(len(nums)): swap = False for j in range(1, len(nums)): if ..
๊ทธ๋ํ ํ์ ๋ฐฉ๋ฒ ๊ทธ๋ํ๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ค DFS(Depth First Search์ BFS(Breadth First Search)๋ฅผ ๊ฐ๋จํ ์์๋ฅผ ํตํด ์ดํดํ๊ณ ์ ํ๋ค. ๋ ๋ฐฉ์์ ๊ฐ๊ฐ Stack๊ณผ Queue๋ฅผ ํตํด ๊ตฌํํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ํ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ์ฌ ์ค๋ณต์ผ๋ก ํ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ์ผ ํ๋ค. ๊ทธ๋ํ๋ฅผ ์ฝ๋๋ก ๋ํ๋ด๊ธฐ ๊ทธ๋ฆผ 1์ ๊ทธ๋ํ์ ๋ํ ๋ ธ๋ ์ ๋ณด๋ฅผ ์ฝ๋๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. graph = { 'A': ['B', 'C'], 'B': ['A', 'D'], 'C': ['A', 'E', 'F'], 'D': ['B', 'G'], 'E': ['C', 'H'], 'F': ['C'], 'G': ['D'], 'H': ['E'], } DFS ๊ทธ๋ฆผ 2๋ ๋ฃจํธ ๋ ธ๋๋ฅผ ์์์ผ๋ก ๋ชจ๋ ๊ทธ๋ํ ๊ฒฝ๋ก๋ฅผ ํ์ํ..
Recursion? ์ฌ๊ท๋ ํน์ ํจ์ ๋ด์์ ํจ์ ์์ ์ ๋ค์ ํธ์ถํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฌ๊ท๋ Stack์ ํน์ฑ์ ๊ทธ๋๋ก ๋ฐ์ํ์ฌ, ๊ฐ์ฅ ์ต๊ทผ์ ํธ์ถ๋ ํจ์ ๋ถํฐ ์ฒ๋ฆฌ๋๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค. ์ฌ๊ท๋ฅผ ์ ๋ค๋ฃฐ ์ ์๋ค๋ฉด DFS์ ๋ฐฑํธ๋ํน, ํธ๋ฆฌ ํ์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ๋ ํจ์จ์ ์ผ๋ก ์ ๊ทผํ ์ ์๊ฒ ๋๋ค. ์ด์ง ํธ๋ฆฌ ์ํ ๊ทธ๋ฆผ 1๊ณผ ๊ฐ์ ์ด์ง ํธ๋ฆฌ๊ฐ ์์ ๊ฒฝ์ฐ, 3๊ฐ์ง ๋ฐฉ์์ผ๋ก ํธ๋ฆฌ๋ฅผ ์ํํ ์ ์๋ค. ์ฒซ ๋ฒ์งธ๋ ์ ์ ์ํ๋ก 1-2-4-5-3-6-7 ์์๋ก ํธ๋ฆฌ๋ฅผ ์ํํ๋ค. ๋ ๋ฒ์งธ๋ ์ค์ ์ํ๋ก 4-2-5-1-6-3-7 ์์๋ก ํธ๋ฆฌ๋ฅผ ์ํ ํ๋ค. ๋ง์ง๋ง์ผ๋ก ํ์์ํ๋ 4-5-2-6-7-3-1๋ก ์ํํ๋ค. ํธ๋ฆฌ๋ฅผ ์ํํ๋ ๊ฒ์ ์ฌ๊ท ํธ์ถ์ ํตํด์ ๊ตฌํ ํ ์ ์๋ค. Simple Tree Travel de..
Linked List? ๋จ์ํ ์ ํ ๋ฐฐ์ด(๋ฆฌ์คํธ)์ ์ ์ธํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ์์ ์ผ๋ก ํ ๋นํ๋ค. ๋ง์ฝ, ๋ฐฐ์ด ๋ด์ ๊ฐ ์ญ์ ๊ฐ ํ์ํ๊ฑฐ๋ ์ถ๊ฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ฐ๋ค์ ์๋ฆฌ ๊ต์ฒด๊ฐ ํ์ํ๋ค. ์ด์ ๋ฌ๋ฆฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ์๊ณ , ๊ฐ๊ฐ์ ๋ ธ๋๋ค์ ์ฐ๊ฒฐํ ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋์ด ์ค๊ฐ์ ๊ฐ ์ญ์ ๊ฐ ๋น๋ฒํ๊ฒ ์ผ์ด๋๋ ์๋ฃ๋ฅผ ๊ด๋ฆฌํ๊ธฐ์ ๋ณด๋ค ํจ์จ์ ์ด๋ค. Single Linked List class Node: def __init__(self, data): self.data = data self.next = None class SingleLinkedList: def __init__(self, data): self.head = Node(data) def add(self, data): node = self.head w..
Queue? ๊ฐ์ฅ ์ฒ์์ ์ฝ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋บ ์ ์๋ ๋ฐฉ์(First in First Out) ํ์์ ์๋ฃ๊ตฌ์กฐ Queue์ ์ฐ์ฐ enqueue(data) : data๋ฅผ Queue์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐํ๋ค. dequeue() : Queue์ ๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ data๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ค. peek() : pop()๊ณผ ๋ฌ๋ฆฌ ๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ data๋ฅผ ๋ฐํํ๊ณ , ์ ๊ฑฐํ์ง ์๋๋ค. is_empty() : pop()์ ์ํํ๊ธฐ ์ํด์๋ ์ถ๊ฐ๋ data๊ฐ ์กด์ฌํ์ฌ์ผ ํ๋๋ฐ ์ด๋ฅผ ํ๋ณํ๊ธฐ ์ํจ์ด๋ค. Queue๋ฅผ ํ์ฉํ๋ ๊ฒฝ์ฐ ์ ์ ์ ์ถ์ด ํ์ํ ๊ฒฝ์ฐ ํ๋ก์ธ์ค ๊ด๋ฆฌ, ์ฐ์ ์์ ๋๊ธฐ์ด, ํ๋ฆฐํฐ ์ถ๋ ฅ ์ฒ๋ฆฌ ๋ฑ BFS ๊ตฌํ Queue์ ์ ์ ์ ์ถ ๋ฐฉ์์ ํตํด BFS๋ฅผ ๊ตฌํํ ์ ์๋ค. DFS์ ๊ฒฝ์ฐ Stack์ ์ฌ์ฉ..
Stack? ๊ฐ์ฅ ๋ง์ง๋ง์ ์ฝ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋บ ์ ์๋ ๋ฐฉ์(Last in First Out) ํ์์ ์๋ฃ๊ตฌ์กฐ Stack์ ์ฐ์ฐ push(data) : data๋ฅผ stack์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐํ๋ค. pop() : stack์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐ๋ data๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ค. peek() : pop()๊ณผ ๋ฌ๋ฆฌ ๊ฐ์ฅ ์ต๊ทผ์ ๋ง์ง๋ง์ data๋ฅผ ๋ฐํํ๊ณ , ์ ๊ฑฐํ์ง ์๋๋ค. is_empty() : pop()์ ์ํํ๊ธฐ ์ํด์๋ ์ถ๊ฐ๋ data๊ฐ ์กด์ฌํ์ฌ์ผ ํ๋๋ฐ ์ด๋ฅผ ํ๋ณํ๊ธฐ ์ํจ์ด๋ค. Stack์ ํ์ฉํ๋ ๊ฒฝ์ฐ ์ฌ๊ท ํธ์ถ ์ฌ๊ท์ ์ผ๋ก ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ, ๊ฐ์ฅ ๋ง์ง๋ง์ ํธ์ถ๋ ํจ์ ๋ถํฐ ์ฐจ๋ก๋ก ์คํ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค. ๋ฐ๋ผ์ ์ฌ๊ท ํธ์ถ์ ๊ฒฝ์ฐ Stack์ ํตํด ์ด๋ฅผ ๊ฐ๋ฅํ๋๋ก ํ๋ค. ์์์ ๊ดํธ ๊ฒ์ฌ (..