μ·¨μ
μ νμ¬ μ€λ¬΄λ₯Ό κ²½ννκ³ μΆμ μμ¦ μ€νλ μκ³ μμ¦ μμ‘΄κ°μ΄ λ¨μ΄μ§κ³ λΆμν μκΈ°μΈ μ무κ²λ μλ λλ₯Ό μν΄ μ’ λ μ±μ€νκ³ μ΄μ¬ν μ΄κΈ°μν΄ κΈμ μ΄λ€. μ€ν°λΈ μ‘μ€λΆκ»μ λ§μνμ "μ΄μ λ₯Ό λ€λμ보λ 건 κ·Έλ§νμ. κ·Έ λμ λ΄μΌμ λ°μ μμΌ λκ°μ." λΌλ λ§μ μκ°νλ©° λλ λ λμ λ΄μΌμ μν΄ λ°μ μμΌ λκ°λκ²μ΄λ€! μ·¨μ
νκ³ μΆλ€μ
μλ£κ΅¬μ‘°λ 무μ?
νλ‘κ·Έλλ°μμ ν¨μ¨μ μΈ λ°μ΄ν° κ΄λ¦¬μ μ²λ¦¬λ₯Ό μν΄ νμμ μΌλ‘ μμμΌ νλ κ°λ
μ΄ λ°λ‘ μλ£κ΅¬μ‘°λΌκ³ μκ°νλ€.
μλ£κ΅¬μ‘°λ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ‘°μ§ννλ λ°©λ²μ μλ―Ένκ³ μκ³ λ¦¬μ¦κ³Ό κ²°ν©νμ¬ νλ‘κ·Έλ¨μ μ±λ₯μ μ΅μ νν μ μλ€.
μ΄ κΈμμλ μλ£κ΅¬μ‘°μ κΈ°λ³Έ κ°λ
κ³Ό λͺ κ°μ§ μ£Όμ μλ£κ΅¬μ‘°λ₯Ό μ΄ν΄λ³Ό κ²μ΄λ€.
1. μλ£κ΅¬μ‘°μ νμμ±
μλ£κ΅¬μ‘°λ λ€μν ννμ λ°μ΄ν°λ₯Ό μ μ ν μ‘°μ§ννμ¬ λ ν¨μ¨μ μΈ μ°μ°μ κ°λ₯νκ² νλ€. μλ₯Ό λ€μ΄ νΉμ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² κ²μν΄μΌ ν λ μ ν©ν μλ£κ΅¬μ‘°λ₯Ό μ¬μ©νλ©΄ κ²μ μλλ₯Ό ν¬κ² ν₯μμν¬ μ μλ€.
ν¨μ¨μ μΈ μλ£κ΅¬μ‘°λ₯Ό μ νν¨μΌλ‘μ¨ μκ°κ³Ό λ©λͺ¨λ¦¬λ₯Ό μ μ½νκ³ νλ‘κ·Έλ¨μ μ±λ₯μ μ΅μ νν μ μλ€.
2. μλ£κ΅¬μ‘°μ μ’
λ₯
2-1 λ°°μ΄ (Array)
λ°°μ΄μ κ°μ λ°μ΄ν° νμ
μ μμλ€μ μ°μλ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯νλ μλ£κ΅¬μ‘°μ΄λ€. κ° μμλ κ³ μ ν μΈλ±μ€λ₯Ό ν΅ν΄ μ κ·Όν μ μλ€.
μ₯μ
- λΉ λ₯Έ μ κ·Ό μλ: μΈλ±μ€λ₯Ό ν΅ν΄ O(1) μκ° λ³΅μ‘λλ‘ λΉ λ₯΄κ² νΉμ μμμ μ κ·Όν μ μλ€.
- κ°λ¨ν ꡬ쑰: λ©λͺ¨λ¦¬ κ΅¬μ‘°κ° λ¨μνκ³ μ΄ν΄νκΈ° μ¬μ μμ£Ό μ¬μ©λλ€.
λ¨μ
- κ³ μ λ ν¬κΈ°: μ μΈ μ ν¬κΈ°λ₯Ό μ§μ ν΄μΌ νλ―λ‘ ν¬κΈ° λ³κ²½μ΄ μ΄λ ΅λ€.
- λΉν¨μ¨μ μΈ μ½μ
/μμ : μ€κ°μ λ°μ΄ν°λ₯Ό μ½μ
νκ±°λ μμ ν κ²½μ°μ λ°μ΄ν°λ₯Ό μ΄λν΄μΌ νλ―λ‘ μκ° λ³΅μ‘λκ° O(n)μ΄λ€.
2-2 μ°κ²° 리μ€νΈ (Linked List)
μ°κ²° 리μ€νΈλ κ°κ°μ λ
Έλκ° λ°μ΄ν°μ λ€μ λ
Έλλ₯Ό κ°λ¦¬ν€λ ν¬μΈν°λ₯Ό ν¬ν¨νλ ꡬ쑰μ΄λ€. λ
Έλλ₯Ό λμ μΌλ‘ μΆκ° λ° μμ ν μ μμ΄ μ μ°μ±μ΄ λλ€.
μ₯μ
- λμ ν¬κΈ° μ‘°μ : νμμ λ°λΌ ν¬κΈ°λ₯Ό μ μ°νκ² λ³κ²½ν μ μλ€.
- ν¨μ¨μ μΈ μ½μ
/μμ : μ€κ° μ½μ
λ° μμ μ λ°μ΄ν°λ₯Ό μ΄λν νμκ° μμ΄ O(1) μκ° λ³΅μ‘λλ‘ μ²λ¦¬ν μ μλ€.
λ¨μ
- λλ¦° μ κ·Ό μλ: λ°°μ΄κ³Ό λ¬λ¦¬ μΈλ±μ€λ‘ μ κ·Όν μ μκΈ° λλ¬Έμ νΉμ λ
Έλμ μ κ·Όνλ €λ©΄ μ²μλΆν° μνν΄μΌ νλ€.
- μΆκ° λ©λͺ¨λ¦¬ νμ: κ° λ
Έλλ§λ€ λ€μ λ
Έλλ₯Ό κ°λ¦¬ν€λ ν¬μΈν°λ₯Ό μ μ₯ν΄μΌ νλ―λ‘ λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μ¦κ°νλ€.
2-3 μ€ν (Stack)
μ€νμ λ°μ΄ν°λ₯Ό νμͺ½ λμμλ§ μ½μ
νκ³ μ κ±°νλ μλ£κ΅¬μ‘°λ‘, LIFO(Last In, First Out) μμΉμ λ°λ₯Έλ€. λνμ μΌλ‘ ν¨μ νΈμΆ, λλ리기 κΈ°λ₯ λ±μ μ¬μ©λλ€.
μ₯μ
- κ°λ¨ν ꡬν: μ½μ
λ° μμ κ° νμͺ½ λμμλ§ μ΄λ λκΈ° λλ¬Έμ κ΅¬μ‘°κ° λ¨μνλ€.
- λΉ λ₯Έ μ½μ
/μμ : O(1) μκ° λ³΅μ‘λλ‘ μ½μ
κ³Ό μμ λ₯Ό ν μ μλ€.
λ¨μ
- μ νλ μ κ·Ό λ°©μ: λ§μ§λ§μ μ½μ
λ μμλ§ μ κ·Ό κ°λ₯νμ¬ μ€κ° μμλ₯Ό μ κ·Όν μ μλ€.
2-4 ν (Queue)
νλ FIFO(First In, First Out) μμΉμ λ°λ₯΄λ μλ£κ΅¬μ‘°μ΄λ€. λ°μ΄ν°λ₯Ό μμͺ½μμ μ κ±°νκ³ λ€μͺ½μ μ½μ
νλ€. λκΈ°μ΄κ³Ό κ°μ ꡬ쑰μ μ ν©νλ€.
μ₯μ
- μμ μ μ§: λ¨Όμ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ λκ°λ ꡬ쑰λ‘, μμκ° μ€μν μμ
μ μ 리νλ€.
- λΉ λ₯Έ μ½μ
/μμ : μ½μ
κ³Ό μμ κ° μμͺ½ λμμλ§ μΌμ΄λλ―λ‘ O(1) μκ° λ³΅μ‘λλ‘ ν¨μ¨μ μ΄λ€.
λ¨μ
- μ νλ μ κ·Ό λ°©μ: μ€κ°μ μλ μμμ μ§μ μ κ·Όν μ μλ€.
2-5 νΈλ¦¬ (Tree)
νΈλ¦¬λ κ³μΈ΅ ꡬ쑰λ₯Ό κ°μ§λ λΉμ ν μλ£κ΅¬μ‘°λ‘, λ
Έλ κ° λΆλͺ¨-μμ κ΄κ³κ° μ‘΄μ¬νλ€. μ΄μ§ νΈλ¦¬, AVL νΈλ¦¬, B-νΈλ¦¬ λ± λ€μν ννκ° μμΌλ©° λ°μ΄ν° ꡬ쑰μ μκ³ λ¦¬μ¦ λ¬Έμ μμ μμ£Ό μ¬μ©λλ€.
μ₯μ
- λΉ λ₯Έ νμ: μ λ ¬λ νΈλ¦¬ ꡬ쑰μμλ μνλ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² νμν μ μλ€. μλ₯Ό λ€λ©΄ μ΄μ§ νμ νΈλ¦¬λ O(log n) μκ° λ³΅μ‘λλ₯Ό κ°μ§λ€.
- κ³μΈ΅μ λ°μ΄ν° νν: νΈλ¦¬ ꡬ쑰λ₯Ό ν΅ν΄ κ³μΈ΅μ μΌλ‘ λ°μ΄ν°λ₯Ό λνλΌ μ μμ΄ νμΌ μμ€ν
μ΄λ μ‘°μ§λ ννμ μ ν©νλ€.
λ¨μ
- 볡μ‘ν ꡬν: μ½μ
, μμ , κ· ν μ‘°μ μ΄ λ³΅μ‘ν μ μκ³ λ©λͺ¨λ¦¬μ μ°μ° μ±λ₯μ΄ μꡬλλ€.
- λΉμ©μ΄ λ§μ΄ λλ κ· ν μ μ§: μκ° κ· ν νΈλ¦¬(BST)μ κ²½μ° μ½μ
κ³Ό μμ μ κ· νμ λ§μΆκΈ° μν΄ μΆκ° μ°μ°μ΄ νμνλ€.
2-6 κ·Έλν (Graph)
κ·Έλνλ λ
Έλ(μ μ )μ κ·Έ λ
Έλλ€μ μ°κ²°νλ κ°μ (μ£μ§)μΌλ‘ μ΄λ£¨μ΄μ§ μλ£κ΅¬μ‘°μ΄λ€. λ°©ν₯ κ·Έλν, 무방ν₯ κ·Έλν, κ°μ€μΉ κ·Έλν λ± λ€μν μ’
λ₯κ° μκ³ λ€νΈμν¬, κ²½λ‘μ°ΎκΈ° λ±μ λ¬Έμ μ νμ©λλ€.
μ₯μ
- 볡μ‘ν κ΄κ³ νν κ°λ₯: κ·Έλνλ λ€νΈμν¬, μ§λ λ± λ³΅μ‘ν λ°μ΄ν° κ°μ κ΄κ³λ₯Ό νννλλ° μ 리νλ€.
- μ μ°ν ꡬ쑰: μ₯μ κ³Ό κ°μ μ κ΄κ³λ₯Ό μμ λ‘κ² μ€μ ν μ μμ΄ λ€μν λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
λ¨μ
- λμ λ©λͺ¨λ¦¬ μ¬μ©λ: λ
Έλμ κ°μ μ λͺ¨λ μ μ₯ν΄μΌ νλ―λ‘ λ©λͺ¨λ¦¬ μλͺ¨κ° ν¬λ€.
- 볡μ‘ν ꡬν: κ²½λ‘ νμ, μ΅λ¨ 거리 λ± λ€μν μκ³ λ¦¬μ¦μ΄ νμν΄ κ΅¬νμ΄ λ³΅μ‘ν μ μλ€.
μ΄μ²λΌ κ°κ°μ μλ£κ΅¬μ‘°λ νΉμ ν μ₯μ κ³Ό λ¨μ μ κ°μ§κ³ μμΌλ―λ‘ μ©λμ λ°λΌ μ΅μ μ μλ£κ΅¬μ‘°λ₯Ό μ ννλ κ²μ΄ μ€μνλ€.