λͺ©λ‘π©π» μ»΄ν¨ν° ꡬ쑰/Computer Science (11)
π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
π ν(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() - ..
𫧠μ€ν : λ°μ΄ν°λ₯Ό μμ μ¬λ¦°λ€ : LIFO (Last In First Out) μ λ°λΌ μλ£λ₯Ό λ°°μ΄νλ€ : κ°μ₯ μ΅κ·Όμ μ€νμ μΆκ°ν νλͺ©μ΄ κ°μ₯ λ¨Όμ μ κ±°λ νλͺ© : λ°°μ΄κ³Ό λ¬λ¦¬ μ€νμ μμ μκ°μ i λ²μ§Έ νλͺ©μ μ κ·Όν μ μμ : μ€νμμ λ°μ΄ν°λ₯Ό μΆκ°νκ±°λ μμ νλ μ°μ°μ μμ μκ°μ κ°λ₯νλ€ π«§ μ€νμ΄ μ μ©ν κ²½μ° : μ¬κ· μκ³ λ¦¬μ¦μ μ¬μ©ν λ μ μ©ν¨ : μ¬κ·μ μΌλ‘ ν¨μλ₯Ό νΈμΆν΄μΌ νλ κ²½μ°μ μμ λ°μ΄ν°λ₯Ό μ€νμ λ£μ΄ μ£Όκ³ , μ¬κ· ν¨μλ₯Ό λΉ μ Έ λμ ν΄κ° κ²μ(backtrack) ν λλ μ€νμ λ£μ΄ μ£Όμλ μμ λ°μ΄ν°λ₯Ό λΉΌ μ€μΌ νλ€ : μΌλ ¨μ νμλ₯Ό μ§κ΄μ μΌλ‘ κ°λ₯νκ² ν΄ μ€λ€ : μ¬κ· μκ³ λ¦¬μ¦μ λ°λ³΅μ νν (iterative) λ₯Ό ν΅ν΄μ ꡬνν μ μκ² ν¨ π«§ μ€ν ꡬννκΈ° funct..