Home > Backend > Post > πŸ“[blog post] μ—°μŠ΅ 문제 풀이 정리(2)

πŸ“[blog post] μ—°μŠ΅ 문제 풀이 정리(2)
Java Programming Language Backend blogging

1️⃣ μˆ˜μ—΄κ³Ό μž¬κ·€.

μ—°μŠ΅ 문제λ₯Ό ν’€λ‹€λ³΄λ‹ˆ μˆ˜μ—΄κ³Ό μž¬κ·€μ— λŒ€ν•΄ λ§Žμ€ μˆ˜ν•™μ  사고λ ₯이 ν•„μš”ν•˜κ² λ‹€λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

  • μˆ˜μ—΄ : μˆ˜ν•™μ—μ„œ 수의 λ‚˜μ—΄μ„ μ˜λ―Έν•©λ‹ˆλ‹€.
    • 즉, μ–΄λ–€ κ·œμ°©μ— 따라 λ‚˜μ—΄λœ μˆ˜λ“€μ˜ 집합을 λ§ν•©λ‹ˆλ‹€.
    • μˆ˜μ—΄μ€ 각 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 일련의 ν• (terms)으둜 κ΅¬μ„±λ˜λ©°, 각 항은 νŠΉμ • μœ„μΉ˜(index)λ₯Ό κ°€μ§‘λ‹ˆλ‹€.
    • μˆ˜μ—΄μ˜ μ˜ˆλ‘œλŠ” λ‹€μŒκ³Ό 같은 것듀이 μžˆμŠ΅λ‹ˆλ‹€.
      • λ“±μ°¨μˆ˜μ—΄: 각 항이 μΌμ •ν•œ κ°’λ§ŒνΌ μ¦κ°€ν•˜κ±°λ‚˜ κ°μ†Œν•˜λŠ” μˆ˜μ—΄(예: 2, 5, 8, 11…)(각 항이 3μ”© 증가)
      • λ“±λΉ„μˆ˜μ—΄: 각 항이 μΌμ •ν•œ λΉ„μœ¨λ‘œ μ¦κ°€ν•˜κ±°λ‚˜ κ°μ†Œν•˜λŠ” μˆ˜μ—΄(예: 3, 9, 27, 81…)(각 항이 이전 ν•­μ˜ 3λ°°)
      • ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄: 첫 두 항이 0κ³Ό 1이고, κ·Έ μ΄ν›„μ˜ 각 항이 λ°”λ‘œ μ•ž λ‘ν•­μ˜ 합인 μˆ˜μ—΄(예: 0, 1, 1, 2, 3, 5, 8….)
        • μˆ˜μ—΄μ€ λ‹€μ–‘ν•œ μˆ˜ν•™μ  문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, 특히 ν•¨μˆ˜, κ·Ήν•œ, 미적뢄 λ“±μ˜ μ£Όμ œμ™€ λ°€μ ‘ν•œ 관련이 μžˆμŠ΅λ‹ˆλ‹€.
  • μž¬κ·€ : ν”„λ‘œκ·Έλž˜λ°κ³Ό μˆ˜ν•™μ—μ„œ μ‚¬μš©λ˜λŠ” κ°œλ…μœΌλ‘œ, μ–΄λ–€ ν•¨μˆ˜λ‚˜ μ•Œκ³ λ¦¬μ¦˜μ΄ 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” λ°©μ‹μšΈ λ§ν•©λ‹ˆλ‹€.
    • μž¬κ·€λ₯Ό 톡해 λ³΅μž‘ν•œ 문제λ₯Ό 더 μž‘μ€ ν•˜μœ„ 문제둜 λ‚˜λˆ„μ–΄ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • μž¬κ·€ ν•¨μˆ˜λŠ” 기본적으둜 두 가지 λΆ€λΆ„μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.
      • 1. κΈ°μ € 쑰건(Base Case) : μž¬κ·€ 호좜이 더 이상 ν•„μš”ν•˜μ§€ μ•Šμ€ 경우λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. κΈ°μ € 쑰건이 좩쑱되면 ν•¨μˆ˜λŠ” 더 이상 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜μ§€ μ•Šκ³  μ’…λ£Œλ©λ‹ˆλ‹€.
      • 2. μž¬κ·€ 호좜(Recursive Call) : ν•¨μˆ˜κ°€ 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜μ—¬ 문제λ₯Ό 더 μž‘μ€ λΆ€λΆ„μœΌλ‘œ λ‚˜λˆ„μ–΄ ν•΄κ²°ν•˜λ €κ³  μ‹œλ„ν•©λ‹ˆλ‹€.
        • μž¬κ·€λŠ” 문제λ₯Ό λ‹¨μˆœν•˜κ³  μ§κ΄€μ μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλŠ” κ°•λ ₯ν•œ λ„κ΅¬μ΄μ§€λ§Œ, μž¬κ·€ 호좜이 κ³Όλ„ν•˜λ©΄ μŠ€νƒ μ˜€λ²„ν”Œλ‘œ(stack overflow)κ°€ λ°œμƒν•  수 μžˆμœΌλ―€λ‘œ μ£Όμ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.
          • λ”°λΌμ„œ μž¬κ·€λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” κΈ°μ € 쑰건을 잘 μ •μ˜ν•˜κ³ , ν•„μš”ν•  경우 반볡(iteration)으둜 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법도 κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€.