νλ‘κ·Έλλ¨Έμ€ λ¬Έμ νμ΄λ₯Ό νλ©°, μλ£κ΅¬μ‘°μ μκ³ λ¦¬μ¦μ΄ λ§μ΄ μ½ν κ² κ°μ JS κΈ°μ λμλ₯Ό μ°Ύλ μ€ μ°Ύκ²λμ΄ κ΅¬μ νλ€!
λμ μκ°
μλ£ κ΅¬μ‘°μ μκ³ λ¦¬μ¦μ νλ‘κ·Έλλ°μ κΈ°λ³Έ μ€μ κΈ°λ³Έμ΄μ§λ§, μ²μ 곡λΆνλ μ¬λμκ²λ κ²°μ½ λ°°μ°κΈ°κ° λ§λ§μΉ μκ³ λ°λΆν μ μλ κ³Όλͺ©μ΄λ€. μ΄ μ± [μλ°μ€ν¬λ¦½νΈ μλ£ κ΅¬μ‘°μ μκ³ λ¦¬μ¦(Learning JavaScript Data Structures and Algorithms)]μ μΈν°λ· λΈλΌμ°μ λ§ μμΌλ©΄ κ³§λ°λ‘ μ½λλ₯Ό μ€νν΄λ³Ό μ μκ², μ°λ¦¬μκ² μΉμν μλ°μ€ν¬λ¦½νΈ μΈμ΄λ₯Ό μ¬μ©ν΄ λ±λ±νκ³ μ¬λ―Έμλ μλ£ κ΅¬μ‘°μ μκ³ λ¦¬μ¦ νμ΅μ μ½κ³ λͺ μΎνκ² νμ΄μ€λ€.
μ΄ μ± μμ λ€λ£° λ΄μ©
β λ°°μ΄, μ€ν, νμμ μμμ μ μΈ, μΆκ°, μμ
β DFSμ BFS μκ³ λ¦¬μ¦μΌλ‘ κ°μ₯ 볡μ‘ν μλ£ κ΅¬μ‘°μΈ κ·Έλνλ₯Ό λ§λ€μ΄ μ¬μ©
β μ°κ²° 리μ€νΈ, μ΄μ€ μ°κ²° 리μ€νΈ, νν μ°κ²° 리μ€νΈμ κ°λ ₯ν μ°μμ μ΄ν΄
β ν΄μ ν
μ΄λΈ, λμ
λ리, μ§ν©μΌλ‘ μ€λ³΅λμ§ μλ μμ μ μ₯
β μ΄μ§ νΈλ¦¬μ μ΄μ§ νμ νΈλ¦¬μ μμ©
β λ²λΈ μ λ ¬, μ ν μ λ ¬, μ½μ
μ λ ¬, λ³ν© μ λ ¬, ν΅ μ λ ¬ μκ³ λ¦¬μ¦μ μ΄μ©ν μλ£ κ΅¬μ‘° μ λ ¬
β μμ°¨ νμκ³Ό μ΄μ§ νμμΌλ‘ μλ£ κ΅¬μ‘°μ μμ μ°ΎκΈ°
β O νκΈ°λ²μ μ€μμ±κ³Ό λμ νλ‘κ·Έλλ°, μμ¬μμ΄ μκ³ λ¦¬μ¦ μ΄ν΄
μΆμ² λ μ
μλ°μ€ν¬λ¦½νΈ κ°λ°μ, λλ μλ°μ€ν¬λ¦½νΈμ κΈ°μ΄ μ§μμ κ°μΆ μ¬λμ΄λΌλ©΄ μλ°μ€ν¬λ¦½νΈμ μ΅μ νλ μ½λλ₯Ό μ΄ν΄λ³΄λ©΄μ λΉ λ₯΄κ² μ± μ₯μ λ겨볼 μ μμ κ²μ΄λ€. μκ³ λ¦¬μ¦ κ³΅λΆλ₯Ό μ¬λ―Έμκ² μμνλ €λ©΄ μ½κ°μ νλ‘κ·Έλλ° μ§μμ νμνλ€.
μ΄ μ± μ ꡬμ±
1μ₯, βμλ°μ€ν¬λ¦½νΈ κ°μβμμλ μλ£ κ΅¬μ‘°μ μκ³ λ¦¬μ¦μ λ°°μ°κΈ° μ μ νμν κΈ°λ³Έμ μΈ λ΄μ©κ³Ό μ΄ μ± μ μμ μ½λ μ€μ΅μ νμν κ°λ° νκ²½ μ€μ μ μ€λͺ νλ€.
2μ₯, βλ°°μ΄βμμλ μλ£ κ΅¬μ‘°μ κ°μ₯ κΈ°λ³Έμ΄λ©΄μ λ§μ΄ μ°μ΄λ λ°°μ΄μ λν΄ λ€λ£¬λ€. λ°°μ΄μ μμλ₯Ό μ μΈ, μ΄κΈ°ν, μΆκ°, μμ νλ λ°©λ²μ ꡬ체μ μΈ μμλ‘ μ€λͺ νκ³ , μλ°μ€ν¬λ¦½νΈ λ΄μ₯ λ©μλμ λν΄μλ μμλ³Έλ€.
3μ₯, βμ€νβμμλ μ€ν μλ£ κ΅¬μ‘°λ₯Ό μ€λͺ νκ³ , μ€νμ μμ± λ°©λ²κ³Ό μμλ₯Ό μΆκ°/μμ νλ λ°©λ²μ μ΄ν΄λ³Έλ€. μ€νμ μ΄μ©ν΄ μ»΄ν¨ν° κ³Όνμ λ¬Έμ λ€μ μ΄λ»κ² ν΄κ²°νλμ§ μμλ³Έλ€.
4μ₯, βνβμμλ ν μλ£ κ΅¬μ‘°λ₯Ό μ€λͺ νκ³ , νμ μμ± λ°©λ²κ³Ό μμλ₯Ό μΆκ°/μμ νλ λ°©λ²μ μ΄ν΄λ³Έλ€. νλ₯Ό μ΄μ©ν΄ μ»΄ν¨ν° κ³Όνμ λ¬Έμ λ€μ μ΄λ»κ² ν΄κ²°νλμ§ μμλ³΄κ³ , μ€νκ³Ό νμ μ°¨μ΄μ μ λΉκ΅νλ€.
5μ₯, βμ°κ²° 리μ€νΈβμμλ κ°μ²΄μ ν¬μΈν° κ°λ μ κ°μ§κ³ μ°κ²° 리μ€νΈ μλ£ κ΅¬μ‘°λ₯Ό λ§λ€μ΄λ³Έλ€. μμμ μ μΈ, μμ±, μΆκ°, μμ νλ λ°©λ² μΈμλ μ΄μ€ μ°κ²° 리μ€νΈ, νν μ°κ²° 리μ€νΈ λ±μ λ³νλ ννμ μ°κ²° 리μ€νΈμ λν΄μλ μμλ³Έλ€.
6μ₯, βμ§ν©βμμλ μ§ν© μλ£ κ΅¬μ‘°λ₯Ό μκ°νκ³ , λΉλ°λ³΅μ μΈ μμλ₯Ό μ μ₯νλ λ°©λ²μ μμλ³Έλ€. λͺ κ°μ§ μμ΄ν μ§ν© μ°μ°μ λν΄ μ΄ν΄λ³΄κ³ κ°κ°μ μ΄λ»κ² ꡬνν μ§, μ΄λ»κ² νμ©ν μ§ λ°°μ΄λ€.
7μ₯, βλμ λ리μ ν΄μβμμλ λμ λ리, ν΄μ μλ£ κ΅¬μ‘°μ λ μ¬μ΄μ μ°¨μ΄μ μ μ€λͺ νλ€. λ μλ£ κ΅¬μ‘°λ₯Ό μ μΈ, μμ±, νμ©νκ³ , ν΄μ μΆ©λμ μ°νν΄ λ λμ ν΄μ ν¨μλ₯Ό λ§λλ κΈ°λ² λ±μ μμλ³Έλ€.
8μ₯, βνΈλ¦¬βμμλ νΈλ¦¬ μλ£ κ΅¬μ‘°μ κ΄λ ¨ μ©μ΄λ₯Ό μ€λͺ νκ³ , μ΄μ§ νμ νΈλ¦¬μ λ Έλλ₯Ό νμ, μν, μΆκ°, μμ νλ λ©μλλ₯Ό μ§μ€μ μΌλ‘ λ€λ£¬λ€. ν₯λ―Έμ§μ§ν νΈλ¦¬μ μΈκ³λ‘ μλ΄νκ³ , λ€μ λ¨κ³μμ νμ΅ν΄μΌ ν νΈλ¦¬ μκ³ λ¦¬μ¦μ μ μνλ€.
9μ₯, βκ·Έλνβμμλ λλΌμ΄ κ·Έλν μλ£ κ΅¬μ‘°μ μΈκ³λ‘ μ¬λ¬λΆμ μ΄λνλ€. κ·Έλνλ₯Ό μμ©ν΄ μ€μνμ κ°κ°μ§ λ¬Έμ λ€μ ν΄κ²°νλ λ°©λ²κ³Ό μΌλ°μ μΈ κ·Έλν μ©μ΄λ€, κ·Έλνλ₯Ό νννλ μ¬λ¬ κ°μ§ λ°©λ², λλΉ μ°μ , κΉμ΄ μ°μ νμ μκ³ λ¦¬μ¦μΌλ‘ κ·Έλνλ₯Ό μννλ λ°©λ²κ³Ό μμ© μ¬λ‘λ₯Ό μ΄ν΄λ³Έλ€.
10μ₯, βμ λ ¬κ³Ό κ²μ μκ³ λ¦¬μ¦βμμλ κ°μ₯ λ§μ΄ μ°μ΄λ μ λ ¬ μκ³ λ¦¬μ¦(λ²λΈ μ λ ¬, μ ν μ λ ¬, μ½μ μ λ ¬, λ³ν© μ λ ¬, ν΅ μ λ ¬)κ³Ό νμ μκ³ λ¦¬μ¦(μμ°¨ κ²μ, μ΄μ§ κ²μ)μ λ€λ£¬λ€.
11μ₯, βκ·Έ λ°μ μκ³ λ¦¬μ¦βμμλ λͺλͺ μκ³ λ¦¬μ¦μ μΆκ°λ‘ μκ°νκ³ O νκΈ°λ²μ κ°λ μ μ€λͺ νλ€. μ¬κ· κ°λ μ λΉλ‘―ν΄μ λμ νλ‘κ·Έλλ°κ³Ό μμ¬μμ΄ μκ³ λ¦¬μ¦ κ°μ κ³ κΈ μκ³ λ¦¬μ¦ κΈ°λ²μ λ€λ£¬λ€. λ§μ§λ§μΌλ‘, μ¬λ¬λΆμ΄ μ± κ±°λ¦¬λ₯Ό ν μ΄νμ 곡λΆν λ΄μ©μ μ μνλ€.
λΆλ‘, βO νκΈ°λ² μ 리βμμλ μ΄ μ± μμ λ°°μ΄ μκ³ λ¦¬μ¦μ 볡μ‘λλ₯Ό O νκΈ°λ²μΌλ‘ μ 리ν νλ₯Ό μ 곡νλ€.