Home > Data Structure > 🧩 [Data Structure] μžλ£Œκ΅¬μ‘°μ™€ μž¬κ·€

🧩 [Data Structure] μžλ£Œκ΅¬μ‘°μ™€ μž¬κ·€
Data Structure

🧩 [Data Structure] μžλ£Œκ΅¬μ‘°μ™€ μž¬κ·€.

πŸ“Œ Intro.

  • β†˜οΈŽ μž¬κ·€λŠ” β€˜λ‚΄ μ•ˆμ˜ λ‚˜λ₯Ό μ°ΎλŠ” 것’이닀.
    • β†˜οΈŽ 즉, 성격은 κ°™κ³  크기만 μž‘μ€ λ‚˜λ₯Ό μ°Ύμ•„ 큰 λ‚˜μ™€ μž‘μ€ λ‚˜κ°€ μ—°κ²°λœ 관계λ₯Ό λ“œλŸ¬λ‚΄λŠ” 것이닀.

βœ…1️⃣ μž¬κ·€μ˜ μ˜ˆμ‹œ.

  • 1. νŒ©ν† λ¦¬μ–Ό(Factorial)
    • β†˜οΈŽ n! = n x (n-1)!이닀.
    • β†˜οΈŽ 크기가 n인 νŒ©ν† λ¦¬μ–Όμ€ 크기가 n-1인 νŒ©ν† λ¦¬μ–Όμ„ ν¬ν•¨ν•˜κ³  μžˆλ‹€.
    • β†˜οΈŽ 1λΆ€ν„° nκΉŒμ§€ κ³±ν•˜λŠ” n!(n νŒ©ν† λ¦¬μ–Ό)은 n! = 1 x 2 x 3 x ... x (n-1) x n이닀.
      • β†˜οΈŽ μ—¬κΈ°μ„œ 맨 끝에 μžˆλŠ” n만 μ œμ™Έν•˜λ©΄ 1 x 2 x 3 x ... x (n-1)인데 이것은 (n-1)!이닀.
      • β†˜οΈŽ n!은 여기에 n만 더 κ³±ν•˜λ©΄ λœλ‹€.
        • 즉, n! = n x (n-1)!이닀.

βœ…2️⃣ μž¬κ·€μ  ꡬ쑰.

  • β†˜οΈŽ μ–΄λ–€ λ¬Έμ œλ‚˜ ν•¨μˆ˜ 등이 μžμ‹ κ³Ό 성격이 λ˜‘κ°™μ§€λ§Œ 크기가 더 μž‘μ€ 문제λ₯Ό ν•˜λ‚˜ 이상 ν¬ν•¨ν•˜κ³  μžˆμ„ λ•Œ μž¬κ·€μ  ꡬ쑰λ₯Ό κ°–κ³  μžˆλ‹€κ³  λ§ν•œλ‹€.
  • β†˜οΈŽ 자기 μžμ‹ μ„ μ •μ˜ν•˜κ±°λ‚˜ μ°Έμ‘°ν•˜λŠ” ꡬ쑰λ₯Ό μ˜λ―Έν•œλ‹€.
    • β†˜οΈŽ 즉, μ–΄λ–€ κ°œλ…, ν•¨μˆ˜, 데이터 ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜ 등이 μžμ‹ μ„ 반볡적으둜 ν˜ΈμΆœν•˜κ±°λ‚˜ ν¬ν•¨ν•˜λŠ” 방식을 λ§ν•œλ‹€.

βœ…3️⃣ μž¬κ·€μ  ꡬ쑰의 κ°œλ….

  • β†˜οΈŽ μ •μ˜ : 자기 μžμ‹ μ„ μ°Έμ‘°ν•˜κ±°λ‚˜ ν¬ν•¨ν•˜λŠ” ꡬ쑰.
  • β†˜οΈŽ μ£Όμš” νŠΉμ§• : 문제λ₯Ό 더 μž‘μ€ λΆ€λΆ„ 문제둜 λ‚˜λˆ„κ³ , 이 λΆ€λΆ„ 문제λ₯Ό ν•΄κ²°ν•œ λ’€ κ²°κ³Όλ₯Ό κ²°ν•©ν•˜μ—¬ 전체 문제λ₯Ό 해결함.
  • β†˜οΈŽ μ’…λ£Œ 쑰건(Base Case) : λ¬΄ν•œνžˆ λ°˜λ³΅λ˜μ§€ μ•Šλ„λ‘ λ©ˆμΆ”λŠ” 쑰건이 λ°˜λ“œμ‹œ ν•„μš”ν•¨.

βœ…4️⃣ μž¬κ·€μ  ꡬ쑰의 μž₯단점.

μž₯점 단점
문제λ₯Ό λ…Όλ¦¬μ μœΌλ‘œ ν‘œν˜„ν•˜κΈ° 쉽닀 반볡 호좜둜 인해 μŠ€νƒ μ˜€λ²„ν”Œλ‘œμš° μœ„ν—˜μ΄ μžˆλ‹€
λ³΅μž‘ν•œ 문제λ₯Ό κ°„κ²°ν•˜κ²Œ ν‘œν˜„ν•  수 μžˆλ‹€ λΉ„νš¨μœ¨μ μΈ λ©”λͺ¨λ¦¬ μ‚¬μš© κ°€λŠ₯μ„±
μ’…λ£Œ 쑰건(Base Case)만 λͺ…ν™•ν•˜λ©΄ κ΅¬ν˜„μ΄ 쉽닀 반볡문(Iterative)보닀 속도가 느릴 수 μžˆλ‹€

βœ…5️⃣ μž¬κ·€μ  ꡬ쑰의 핡심 μš”μ†Œ.

  • β†˜οΈŽ Base Case (μ’…λ£Œ 쑰건) : 더 이상 μž¬κ·€κ°€ μ§„ν–‰λ˜μ§€ μ•ŠλŠ” μ‘°κ±΄μž„.
  • β†˜οΈŽ Recursive Case(μž¬κ·€ 쑰건) : 문제λ₯Ό 더 μž‘μ€ λ‹¨μœ„λ‘œ λ‚˜λˆ„κ³  자기 μžμ‹ μ„ ν˜ΈμΆœν•¨.
  • β†˜οΈŽ Stack λ©”λͺ¨λ¦¬ μ‚¬μš© : μž¬κ·€ ν˜ΈμΆœλ§ˆλ‹€ μƒˆλ‘œμš΄ μŠ€νƒ ν”„λ ˆμž„μ΄ 생성됨.

βœ…6️⃣ ν”„λ‘œκ·Έλž˜λ°κ³Ό μž¬κ·€(Recursion)

  • β†˜οΈŽ λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” 자기호좜 κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
  • β†˜οΈŽ μ˜μ–΄λ‘œλŠ” recursion이라고 ν•˜κ³  우리말둜 보톡 μž¬κ·€λΌκ³  ν•œλ‹€.
    • β†˜οΈŽ 이런 μ˜λ―Έμ—μ„œ, μžλ£Œκ΅¬μ‘°μ™€ μ•Œκ³ λ¦¬μ¦˜μ€ 관계 μ€‘μ‹¬μ˜ 사고방식을 ν›ˆλ ¨ν•˜λŠ” 도ꡬ이기도 ν•˜λ‹€.

βœ…7️⃣ μž¬κ·€μ™€ 자료ꡬ쑰 그리고 μ•Œκ³ λ¦¬μ¦˜.

  • β†˜οΈŽ μž¬κ·€λ₯Ό λͺ¨λ₯΄κ³ λŠ” μžλ£Œκ΅¬μ‘°μ™€ μ•Œκ³ λ¦¬μ¦˜μ„ 곡뢀할 수 μ—†λ‹€.
  • β†˜οΈŽ μž¬κ·€λŠ” 컴퓨터 κ³Όν•™ 이둠의 근간을 μ΄λ£¨λŠ” μ€‘μš” κ°œλ….
    • β†˜οΈŽ μ–΄λ ΅κ±°λ‚˜ νŠΉλ³„ν•œ μ£Όμ œκ°€ μ•„λ‹˜.
    • β†˜οΈŽ 컴퓨터 과학을 κ³΅λΆ€ν•˜λ‹€ 보면 μž¬κ·€λŠ” λŠμž„μ—†μ΄ λ‹€μ–‘ν•œ μ–Όκ΅΄λ‘œ μΆœν˜„ν•¨.