μκ³ λ¦¬μ¦ μ΅μ νλ‘ μ²λ¦¬ μλ 200% ν₯μμν¨ 8κ°μ§ λλΌμ΄ λ°©λ²(1)
ν¨μ¨μ μΈ μκ³ λ¦¬μ¦ μ΅μ νλ μννΈμ¨μ΄ κ°λ°μμ λ§€μ° μ€μν μμμ λλ€. μ±λ₯μ΄ ν₯μλλ©΄ μ¬μ©μ κ²½νμ΄ κ°μ λ λΏλ§ μλλΌ μλ² λΉμ©λ μ€μ΄λλ ν¨κ³Όκ° μμ΅λλ€. μ΄ κΈμμλ μκ³ λ¦¬μ¦ μ΅μ νλ₯Ό ν΅ν΄ μ²λ¦¬ μλλ₯Ό 200% ν₯μμν¬ μ μλ 8κ°μ§ λ°©λ²μ λν΄ μ΄ν΄λ³΄κ² μ΅λλ€. κ° λ°©λ²μ μ½λμ μ΄λ‘ λΏλ§ μλλΌ μ€μ μ μ© μ¬λ‘λ₯Ό ν΅ν΄ μ€λͺ ν κ²μ λλ€.
1. μκ° λ³΅μ‘λ λΆμνκΈ°
μκ³ λ¦¬μ¦μ μ±λ₯μ λμ΄κΈ° μν 첫 κ±Έμμ κ·Έ μκ° λ³΅μ‘λλ₯Ό λΆμνλ κ²μ λλ€. μκ° λ³΅μ‘λλ μκ³ λ¦¬μ¦μ΄ μ λ ₯ λ°μ΄ν°μ ν¬κΈ°μ λ°λΌ μΌλ§λ λ§μ μκ°μ μμνλμ§λ₯Ό λνλ΄λ μ§νμ λλ€. λ§μ½ O(n)λ³΄λ€ λμ 볡μ‘λμ μκ³ λ¦¬μ¦μ μ¬μ©νκ³ μλ€λ©΄, μ΄λ₯Ό κ°μ νλ κ²μ΄ μ€μν©λλ€.
μλ₯Ό λ€μ΄, μ λ ¬ μκ³ λ¦¬μ¦ μ€ λ²λΈ μ λ ¬(Bubble Sort)μ O(nΒ²)μ μκ° λ³΅μ‘λλ₯Ό κ°μ§λλ€. μ΄λ ν° λ°μ΄ν° μΈνΈμμλ μλΉν μκ° μ§μ°μ μ΄λν©λλ€. μ΄λ¬ν κ²½μ°, ν΅ μ λ ¬(Quick Sort)μ΄λ λ³ν© μ λ ¬(Merge Sort)κ³Ό κ°μ O(n log n) 볡μ‘λλ₯Ό κ°μ§ μκ³ λ¦¬μ¦μΌλ‘ λ³κ²½νλ©΄ μ±λ₯ ν₯μμ μ΄λμ΄λΌ μ μμ΅λλ€.
λΆμ λꡬλ₯Ό μ¬μ©νλ©΄ μ½λμ μ±λ₯μ λͺ¨λν°λ§νκ³ λ³λͺ© νμμ μλ³ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ°μ₯ μκ°μ΄ λ§μ΄ μμλλ λΆλΆμ μ΅μ ννμ¬ μ 체 μ²λ¦¬ μλλ₯Ό ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
κ²°λ‘
μκ° λ³΅μ‘λλ₯Ό λΆμνλ©΄ μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ νλμ νμ ν μ μμ΅λλ€. μ΄λ₯Ό λ°νμΌλ‘ νΉμ μκ³ λ¦¬μ¦μ μ±λ₯μ κ°μ νκ³ , νμν κ²½μ° λ체 μκ³ λ¦¬μ¦μ λμ ν¨μΌλ‘μ¨ μ²λ¦¬ μλλ₯Ό ν¬κ² ν₯μν μ μμ΅λλ€.
2. κ³΅κ° λ³΅μ‘λ μ΅μ ν
κ³΅κ° λ³΅μ‘λλ μκ³ λ¦¬μ¦μ΄ νμλ‘ νλ λ©λͺ¨λ¦¬ 곡κ°μ μμ λνλ λλ€. μκ³ λ¦¬μ¦μ΄ μ¬μ©νλ λ©λͺ¨λ¦¬κ° λ§μμ§μλ‘, μμ€ν μ μ±λ₯ λν μ νλ κ°λ₯μ±μ΄ λμμ§λλ€. λ°λΌμ μκ³ λ¦¬μ¦ μ΅μ νμμλ κ³΅κ° λ³΅μ‘λλ₯Ό κ³ λ €νλ κ²λ νμμ μ λλ€.
μλ₯Ό λ€μ΄, λ°°μ΄μ μ¬μ©νμ¬ λ°μ΄ν° μ‘°μμ μνν κ²½μ°, λΆνμν λ©λͺ¨λ¦¬ μ¬μ©μ νΌνλλ‘ ν΄μΌ ν©λλ€. 리μ€νΈ(List)μ κ°μ λ°μ΄ν° ꡬ쑰λ₯Ό νμ©νλ©΄ λ©λͺ¨λ¦¬λ₯Ό λμ μΌλ‘ ν λΉν μ μμΌλ©°, λΆνμν λ©λͺ¨λ¦¬ μ¬μ©μ μ€μΌ μ μμ΅λλ€.
λν, λ©λͺ¨λ¦¬ ν λΉ λ°©μμ κ°μ νμ¬ μΊμ μ§μμ±μ λμμΌλ‘μ¨ CPU μΊμλ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€. μ΄λ° μ΅μ ν κΈ°λ²μ ν΅ν΄ λΉλ²ν λ©λͺ¨λ¦¬ μ‘μΈμ€ μ λ°μνλ μ§μ°μ μ€μΌ μ μμ΅λλ€.
κ²°λ‘
κ³΅κ° λ³΅μ‘λλ₯Ό μ΅μ ννλ©΄ λ©λͺ¨λ¦¬ μ¬μ©μ μ€μ΄κ³ , κ²°κ³Όμ μΌλ‘ μμ€ν μ μ λ°μ μΈ μ±λ₯ ν₯μμ λλͺ¨ν μ μμ΅λλ€. μ΄ κ³Όμ μ ν΅ν΄ μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ λμ΄λ©΄μλ μμ μ±μ μ μ§ν μ μμ΅λλ€.
3. λ°λ³΅λ¬Έ μ΅μ ν
λ°λ³΅λ¬Έμ μκ³ λ¦¬μ¦μ μ±λ₯μ ν° μν₯μ λ―ΈμΉλλ‘ μ€κ³λ©λλ€. λΆνμν λ°λ³΅λ¬Έμ΄ μ‘΄μ¬νλ©΄ μκ³ λ¦¬μ¦μ μ€ν μκ°μ μ¦κ°μν¬ μ μμ΅λλ€. λ°λΌμ λ°λ³΅λ¬Έμ μ΅μ ννλ κ³Όμ μ΄ νμμ μ λλ€.
λ¨Όμ , μ¬λ¬ λ² λ°λ³΅λλ κ³μ°μ μ΅μνν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, μ€μ²© λ°λ³΅λ¬Έμμ μ€λ³΅λλ κ³μ°μ λ³λμ λ³μμ μ μ₯ν΄ μ¬μ¬μ©ν¨μΌλ‘μ¨ μκ°μ μ μ½ν μ μμ΅λλ€.
λν, 쑰건문 λ΄μμ λ°λ³΅λ¬Έμ 쑰건μ 미리 체ν¬νλ κ²λ μ μ©ν©λλ€. μ΄λ‘ μΈν΄ κ³μ°μ νμμ±μ μ¬μ μ νλ¨νκ³ λΆνμν λ°λ³΅μ λ°©μ§ν μ μμ΅λλ€.
κ²°λ‘
ν¨μ¨μ μΈ λ°λ³΅λ¬Έ μ΅μ νλ μκ³ λ¦¬μ¦μ μ²λ¦¬ μλλ₯Ό ν¬κ² ν₯μμν¬ μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ½λμ μ±λ₯μ λμ΄λ©°, μ λ°μ μΌλ‘ μλ΅ μλκ° κ°μ λ©λλ€.
4. λ°μ΄ν° ꡬ쑰 μ ν
μ¬λ°λ₯Έ λ°μ΄ν° ꡬ쑰 μ νμ μ±λ₯ μ΅μ νμ ν° μν₯μ λ―ΈμΉ©λλ€. μ ν©ν λ°μ΄ν° ꡬ쑰λ₯Ό μ¬μ©νλ©΄ μκ³ λ¦¬μ¦μ μκ° λ° κ³΅κ° λ³΅μ‘λλ₯Ό μ€μΌ μ μμ΅λλ€.
μλ₯Ό λ€μ΄, κ²μμ΄ λΉλ²νκ² λ°μνλ κ²½μ° ν΄μ ν μ΄λΈ(Hash Table)μ μ¬μ©νλ κ²μ΄ λ§€μ° ν¨κ³Όμ μ λλ€. ν΄μ ν μ΄λΈμ νκ· μ μΌλ‘ O(1) 볡μ‘λλ‘ μμλ₯Ό κ²μν μ μμ΄, λ°°μ΄μ΄λ 리μ€νΈμ λΉν΄ ν¨μ¬ λΉ λ₯Έ μ±λ₯μ μλν©λλ€.
리μ€νΈλ₯Ό μ¬μ©ν λλ μ λ ¬λ ννλ‘ μ μ§νλ©΄μ μ΄μ§ κ²μ(Binary Search)μ ν΅ν΄ κ²μ μκ°μ λ¨μΆμν¬ μ μμ΅λλ€. μ΄λ° κ²°μ μ λ°μ΄ν°μ νΉμ±μ λ°λΌ λ¬λΌμ ΈμΌ ν©λλ€.
κ²°λ‘
λ°μ΄ν° ꡬ쑰λ₯Ό νλͺ νκ² μ ννλ©΄ μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ ν¬κ² ν₯μν μ μμ΅λλ€. μ΄ κ³Όμ μ μ 체 μμ€ν μ μ±λ₯ ν₯μμ κΈ°μ¬νκ² λ©λλ€.
5. μκ³ λ¦¬μ¦ μμ
κΈ°μ‘΄ μκ³ λ¦¬μ¦μ κ·Έλλ‘ μ¬μ©ν기보λ€λ νΉμ μꡬ μ¬νμ λ§κ² μμ νλ κ²μ΄ μ€μν©λλ€. κ²½μ°μ λ°λΌ μκ³ λ¦¬μ¦μ λ¬Έμ μ νΉμ±μ λ°λΌ λ€λ₯΄κ² μλν μ μμ΅λλ€.
μλ₯Ό λ€μ΄, μ΅λ¨ κ²½λ‘ μκ³ λ¦¬μ¦μΈ λ€μ΅μ€νΈλΌ(Dijkstra)μ μκ³ λ¦¬μ¦μ μ£Όμ΄μ§ κ·Έλνμ νΉμ±μ λ°λΌ κ°μ λ μ μμ΅λλ€. μλ₯Ό λ€μ΄, λΆν λΆμ°μ΄ νμν κ²½μ°, A* κ²μ μκ³ λ¦¬μ¦μ ν΅ν΄ λ³΄λ€ ν¨μ¨μ μΈ κ²½λ‘λ₯Ό κ³μ°ν μ μμ΅λλ€.
λν, λ³λ ¬ μ²λ¦¬λ₯Ό ν΅ν΄ λ°λ³΅μ μΈ κ³μ°μ μ¬λ¬ νλ‘μΈμμμ μνν μ μμ΅λλ€. μ΄λ κ² νλ©΄ μ€ν μκ°μ λν μ€μΌ μ μμ΅λλ€.
κ²°λ‘
μκ³ λ¦¬μ¦μ μ μ νκ² μμ ν¨μΌλ‘μ¨ μ±λ₯μ λμ΄λ κ²μ΄ κ°λ₯ν©λλ€. μ΄λ κ² νλ©΄ λ³΄λ€ ν¨μ¨μ μΈ μ²λ¦¬κ° μ΄λ£¨μ΄μ§λ©°, μ€μ μν©μ λ°λΌ μ μ°ν λμ²κ° κ°λ₯ν©λλ€.
6. μΊμ μ΅μ ν
μΊμ μ΅μ νλ λ©λͺ¨λ¦¬ λ° CPU κ°μ μ‘μΈμ€λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬νλ κΈ°λ²μ λλ€. CPUλ λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬μμ μ§μ μ½μ΄μ€λ©΄ λ리기 λλ¬Έμ, μΊμ λ©λͺ¨λ¦¬λΌλ μ€κ° μ μ₯ 곡κ°μ νμ©νμ¬ λ―Έλ¦¬ λ°μ΄ν°λ₯Ό μ μ₯ν΄ λλ κ²μ΄ ν¨κ³Όμ μ λλ€.
μ΄ μΉμ μμ λ€λ£° μ¬μ― λ²μ§Έ μ£Όμ λ μΊμ μ΅μ νμ λλ€. μΊμλ₯Ό ν¨μ¨μ μΌλ‘ νμ©νλ©΄ μκ³ λ¦¬μ¦μ μλλ₯Ό ν₯μμν¬ μ μμ΅λλ€. μλ₯Ό λ€μ΄, μΉ μ ν리μΌμ΄μ μμ μ¬μ©μκ° μμ£Ό μ κ·Όνλ λ°μ΄ν°λ₯Ό μΊμ±νλ©΄ μ¬μ©μ κ²½νμ νμ ν κ°μ ν μ μμ΅λλ€.
κ²°λ‘
μκ³ λ¦¬μ¦ μ΅μ νλ μ±λ₯μ κ·Ήλννλ λ° μμ΄ νμμ μ λλ€. μ΄λ₯Ό ν΅ν΄ λμ± ν¨μ¨μ μΈ μννΈμ¨μ΄λ₯Ό κ°λ°ν μ μμΌλ©°, μ¬μ©μ κ²½νμ κ°μ νκ² λ©λλ€. μ¬λ¬λΆλ μ΄ 8κ°μ§ λ°©λ²μ μ°Έκ³ νμ¬ μκ³ λ¦¬μ¦μ μ΅μ νν΄ λ³΄μκΈ° λ°λλλ€.
λ©ν μ€λͺ : μκ³ λ¦¬μ¦ μ΅μ νλ₯Ό ν΅ν΄ μ²λ¦¬ μλλ₯Ό 200% ν₯μμν€λ 8κ°μ§ λ°©λ²μ μ΄ν΄λ΄ λλ€. ν¨μ¨μ μΈ μννΈμ¨μ΄ κ°λ°μ μν νμ κ°μ΄λμ λλ€.
ν€μλ: μκ³ λ¦¬μ¦ μ΅μ ν, μ±λ₯ ν₯μ, μκ° λ³΅μ‘λ λΆμ, κ³΅κ° λ³΅μ‘λ μ΅μ ν, λ°λ³΅λ¬Έ μ΅μ ν, λ°μ΄ν° ꡬ쑰, μκ³ λ¦¬μ¦ μμ , μΊμ μ΅μ ν.