λͺ©λ‘π©βπ» μ»΄ν¨ν° ꡬ쑰 (110)
π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
β μ€ν λ§ν : κ³μ° λ₯λ ₯μ΄ μλ μΆμ κΈ°κ³μ κ·Έ κΈ°κ³λ₯Ό μ΄μ©ν΄μ ν μ μλ λ¬Έμ λ€μ μ°κ΅¬νλ μ»΄ν¨ν° κ³Όνμ λΆμΌ : μΆμ κΈ°κ³λ₯Ό μ€ν λ§ν(automata, 볡μν) λλ μ€ν λ§ν€(automaton, λ¨μν), μ¦ μλ κΈ°κ³ : μ€ν λ§νλ μ μ΄λ μ νν μνλ₯Ό κ°κ³ , μ λ ₯μ λ°μ μ λ ₯μ λ°λΌ μΌμ νκ² μνλ₯Ό μ μ΄νλ©°, μΆλ ₯μ λ΄λλλ€ : μκ³ λ¦¬μ¦μ΄ μꡬνλ κ², μ¦ κ³μ° λ¬Έμ λ₯Ό ν΄κ²°ν λ₯λ ₯κ³Ό κ°λ€
π ν(heap) μλ£κ΅¬μ‘° : μ΅λκ° λ° μ΅μκ°μ μ°Ύμλ΄λ μ°μ°μ λΉ λ₯΄κ² νκΈ° μν΄ κ³ μλ μμ μ΄μ§νΈλ¦¬ (complete binary tree) λ₯Ό κΈ°λ³ΈμΌλ‘ ν μλ£κ΅¬μ‘° : Aκ° Bμ λΆλͺ¨ λ Έλμ΄λ©΄, Aμ ν€ κ°κ³Ό Bμ ν€ κ° μ¬μ΄μλ λμ κ΄κ³κ° μ±λ¦½λλ€ : μμ μ΄μ§ νΈλ¦¬ : λͺ¨λ λ Έλμ μ μ₯λ κ°μ μμ λ Έλμ μ μ₯λ κ°λ³΄λ€ ν¬κ±°λ μμμΌ νλ μλ£κ΅¬μ‘° μ΅λ ν : λΆλͺ¨ λ Έλμ ν€ κ°μ΄ μμ λ Έλμ ν€ κ°λ³΄λ€ νμ ν° ν κ°μ§ left : i * 2 + 1 right : i * 2 + 2 parent : (i - 1) / 2 μ΅μ ν : λΆλͺ¨ λ Έλμ ν€ κ°μ΄ μμ λ Έλμ ν€ κ°λ³΄λ€ νμ μμ ν κ°μ§ π ν(heap) μ£Όμ λ©μλ peek() : μ΅λ/μ΅μκ° λ¦¬ν΄ size() : ν μ¬μ΄μ¦ λ¦¬ν΄ ..

𫧠μ΄μ§νμνΈλ¦¬ : βλͺ¨λ μΌμͺ½ μμλ€ β€ n < λͺ¨λ μ€λ₯Έμͺ½ μμλ€β μμ±μ λͺ¨λ λ Έλ nμ λν΄μ λ°λμ μ°Έμ΄μ΄μΌ ν¨ : λͺ¨λ λ Έλμ λν΄μ μΌμͺ½ μμλ€μ κ°μ΄ νμ¬ λ Έλ κ°λ³΄λ€ μκ±°λ κ°λλ‘ νκ³ , μ€λ₯Έμͺ½ μμλ€ κ°μ νμ¬ λ Έλμ κ°λ³΄λ€ λ°λμ 컀μΌν¨ π«§ κ· ν vs λΉκ· ν κ· ν λ λ λΈλ νΈλ¦¬ AVL νΈλ¦¬ 𫧠μμ μ΄μ§νΈλ¦¬ : νΈλ¦¬μ λͺ¨λ λμ΄μμ λ Έλκ° κ½ μ°¨ μλ μ΄μ§ νΈλ¦¬ : λ§μ§λ§ λ¨κ³λ κ½ μ°¨ μμ§ μμλ λμ§λ§ λ Έλκ° μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ μ±μμ ΈμΌ ν¨ π«§ μ μ΄μ§νΈλ¦¬ : λͺ¨λ λ Έλμ μμμ΄ μκ±°λ μ νν λ κ° μλ κ²½μ° : μμμ΄ νλλ§ μλ λ Έλκ° μ‘΄μ¬ν΄μλ μλ¨ π«§ ν¬νμ΄μ§νΈλ¦¬ : μ μ΄μ§ νΈλ¦¬μ΄λ©΄μ μμ μ΄μ§ νΈλ¦¬μΈ κ²½μ° : λͺ¨λ λ§λ¨ λ Έλλ κ°μ λμ΄μ μμ΄μΌ νλ©°, λ§μ§λ§ λ¨κ³μμ ..

𫧠νΈλ¦¬ : νλμ λ£¨νΈ μ½λλ₯Ό κ°μ§λ€ : λ£¨νΈ λ Έλλ 0κ° μ΄μμ μμ λ Έλλ₯Ό κ°κ³ μλ€ : νΈλ¦¬μλ μ¬μ΄ν΄ μ‘΄μ¬ν μ μλ€ : λ Έλλ€μ νΉμ μμλ‘ λμ΄λ μλ μκ³ κ·Έλ΄ μ μμ μλ μλ€ : κ° λ Έλλ μ΄λ€ μλ£νμΌλ‘λ ννμ΄ κ°λ₯νλ€ λ Έλ(node) νΈλ¦¬μ ꡬμ±μμμ ν΄λΉνλ A, B, C, D, E, Fμ κ°μ μμ κ°μ (edge) λ Έλμ λ Έλλ₯Ό μ°κ²°νλ μ°κ²°μ λ£¨νΈ λ Έλ(root node) νΈλ¦¬ ꡬ쑰μμ μ΅μμμ μ‘΄μ¬νλ Aμ κ°μ λ Έλ λ¨λ§ λ Έλ(terminal node, leaf node) μλλ‘ λ λ€λ₯Έ λ Έλκ° μ°κ²°λμ΄ μμ§ μμ E, F, C, Dμ κ°μ λ Έλ λ΄λΆ λ Έλ(internal node),λΉ λ¨λ§ λ Έλ(non-terminal node) λ¨λ§ λ Έλλ₯Ό μ μΈν λͺ¨λ λ Έλλ‘ A, B..

𫧠λΉνΈ μ‘°μ : 0s λ λͺ¨λ λΉνΈκ° 0 μΈ κ° : 1s λ λͺ¨λ λΉνΈκ° 1 μΈ κ° : μ°μ°λ€μ΄ λΉνΈ λ¨μλ‘ μ΄λ£¨μ΄ μ§λ€! : ν λΉνΈμμ μΌμ΄λλ μΌμ΄ λ€λ₯Έ λΉνΈμ μ΄λ€ μν₯λ λ―ΈμΉμ§ μλλ€ π«§ 2μ 보μμ μμ : μ»΄ν¨ν°λ μΌλ°μ μΌλ‘ μ μλ₯Ό μ μ₯ν λ 2μ 보μ ννλ‘ μ μ₯ : μμλ₯Ό ννν λ λ¬Έμ μμ : μμλ₯Ό ννν λ κ·Έ μμ μ λκ°μ λΆνΈλΉνΈλ₯Ό 1λ‘ μΈν ν λ€ 2μ 보μλ₯Ό μ·¨ν ννλ‘ ννν¨ : NλΉνΈ μ«μμ λν 2μ 보μλ 2^N μ λν 보μκ°κ³Ό κ°μ (Nμ λΆνΈλΉνΈλ₯Ό λΊ λλ¨Έμ§ κ°μ ννν λ μ¬μ©λλ λΉνΈμ κ°μ) : 2μ 보μλ₯Ό νννλ λ€λ₯Έ λ°©λ²μ μμλ‘ ννλ 2μ§μλ₯Ό λ€μ§μ λ€ 1μ λν΄ μ£Όλ κ² π«§ μ°μ μ°μΈ‘ μννΈ VS λ Όλ¦¬ μ°μΈ‘ μννΈ μ°μ μ°μΈ‘ μννΈ κΈ°λ³Έμ μΌλ‘ 2..

𫧠νΈλ¦¬ : νλμ λ£¨νΈ μ½λλ₯Ό κ°μ§λ€ : λ£¨νΈ λ Έλλ 0κ° μ΄μμ μμ λ Έλλ₯Ό κ°κ³ μλ€ : νΈλ¦¬μλ μ¬μ΄ν΄ μ‘΄μ¬ν μ μλ€ : λ Έλλ€μ νΉμ μμλ‘ λμ΄λ μλ μκ³ κ·Έλ΄ μ μμ μλ μλ€ : κ° λ Έλλ μ΄λ€ μλ£νμΌλ‘λ ννμ΄ κ°λ₯νλ€ π«§ μ΄μ§νΈλ¦¬ : κ° λ Έλκ° μ΅λ λ κ°μ μμμ κ°λ νΈλ¦¬ 𫧠μ΄μ§νμνΈλ¦¬ : βλͺ¨λ μΌμͺ½ μμλ€ β€ n < λͺ¨λ μ€λ₯Έμͺ½ μμλ€β μμ±μ λͺ¨λ λ Έλ nμ λν΄μ λ°λμ μ°Έμ΄μ΄μΌ ν¨ : λͺ¨λ λ Έλμ λν΄μ μΌμͺ½ μμλ€μ κ°μ΄ νμ¬ λ Έλ κ°λ³΄λ€ μκ±°λ κ°λλ‘ νκ³ , μ€λ₯Έμͺ½ μμλ€ κ°μ νμ¬ λ Έλμ κ°λ³΄λ€ λ°λμ 컀μΌν¨ π«§ κ· ν vs λΉκ· ν κ· ν λ λ λΈλ νΈλ¦¬ AVL νΈλ¦¬ 𫧠μμ μ΄μ§νΈλ¦¬ : νΈλ¦¬μ λͺ¨λ λμ΄μμ λ Έλκ° κ½ μ°¨ μλ μ΄μ§ νΈλ¦¬ : λ§μ§λ§ λ¨κ³λ κ½ μ°¨ ..
𫧠ν΄μν μ΄λΈ (hash table) : ν¨μ¨μ μΈ νμμ μν μλ£κ΅¬μ‘°λ‘μ, keyλ₯Ό value μ λμμν΄ : μ΅μ μ κ²½μ° O(n) // nμ ν€μ κ°μ : μ΅μ μ κ²½μ° O(1) 𫧠μ°κ²°λ¦¬μ€νΈμ ν΄μ μ½λ ν¨μλ‘ κ΅¬ν 1) ν€μ ν΄μ μ½λ κ³μ° ν€μ μλ£νμ λ³΄ν΅ int or long ν€μ κ°μ 무ν (int λ μ ν) 2) hash(key) % array_length λ°©μμΌλ‘ ν΄μ μ½λ μ΄μ©ν΄ λ°°μ΄μ μΈλ±μ€ κ΅¬ν¨ μλ‘ λ€λ₯Έ λ κ°μ ν΄μ μ½λκ° κ°μ μΈλ±μ€ κ°λ¦¬ν¬ μ μμ 3) λ°°μ΄μ κ° μΈλ±μ€μλ ν€μ κ°μΌλ‘ μ΄λ£¨μ΄μ§ μ°κ²°λ¦¬μ€νΈ μ‘΄μ¬ ν€μ κ°μ ν΄λΉ μΈλ±μ€μ μ μ₯ (λ°λμ μ°κ²°λ¦¬μ€νΈ μ΄μ©!) π₯ μΆ©λ : μλ‘ λ€λ₯Έ λ κ°μ ν€κ° κ°μ μ½λλ₯Ό κ°λ¦¬ν€κ±°λ, μλ‘ λ€λ₯Έ λ κ°μ ν΄μ μ½λκ° κ°μ μΈλ±μ€λ₯Ό..
𫧠ν : FIFO (First In First Out) μμ : νμ μ μ₯λλ νλͺ©λ€μ νμ μΆκ°λλ μμλλ‘ μ κ±°λλ€ λλΉ μ°μ νμ (bfs) μ²λ¦¬ν΄μΌ ν λ Έλμ 리μ€νΈλ₯Ό μ μ₯νλ μ©λλ‘ ν μ¬μ© λ Έλλ₯Ό νλ μ²λ¦¬ν λλ§λ€ ν΄λΉ λ Έλμ μΈμ ν λ Έλλ€μ νμ λ€μ μ μ₯ λ Έλλ₯Ό μ κ·Όν μμλλ‘ μ²λ¦¬ κ°λ₯ μΊμ ꡬν 𫧠ν ꡬννκΈ° π tail ν¬μΈν°κ° μλ μ°κ²° 리μ€νΈλ₯Ό μ¬μ©νμ¬ κ΅¬ννκΈ° β‘οΈ enqueue(value) - tailμ΄ κ°λ¦¬ν€λ κ³³μ valueλ₯Ό μΆκ°νλ€ int main() { int keys[] = { 1, 2, 3, 4, 5 }; Queue q; // μμ ν€ μ½μ for (int key: keys) { q.enqueue(key); } return 0; } β‘οΈ dequeue() - ..