πμκ³ λ¦¬μ¦
μ»΄ν¨ν° κ³Όνμμ μκ³ λ¦¬μ¦μ΄λ λ¬Έμ λ₯Ό νΈλ μ μ°¨μ κ³Όμ μ μΌμ»«λλ€. μ£Όμ΄μ§ λ¬Έμ λ₯Ό ν΄κ²°νκ±°λ ν¨μλ₯Ό κ³μ°νκΈ° μν΄ λ°λΌμΌ ν λͺ λ Ήμ΄λ€μ λ¨κ³μ μΌλ‘ λμ΄ν κ²μ λ»νλ€.
π쑰건
1. μ μΆλ ₯: 0κ° μ΄μμ μΈλΆ μ λ ₯κ³Ό 1κ° μ΄μμ μΆλ ₯μ μμ±νλ€.
2. λͺ νμ±: κ° λͺ λ Ήμ λͺ¨νΈνμ§ μκ³ λͺ νν΄μΌνλ€.
3. μ νμ±: νμ λ μμ λ¨κ³λ₯Ό κ±°μΉ νμλ λ°λμ μ’ λ£ν΄μΌνλ€.
4. μ ν¨μ±: λͺ¨λ λͺ λ Ήμ μ»΄ν¨ν°μμ μνν μ μμ΄μΌ νλ€.
5. ν¨μ¨μ±: μκ³ λ¦¬μ¦μ ν¨μ¨μ μ΄μ΄μΌ νλ€.(μ€μ©μ κ΄μ )
μ£Όμ΄μ§ λ¬Έμ μ λν νλ μ΄μμ κ²°κ³Όλ₯Ό μμ±νκΈ° μν΄ λͺ¨νΈνμ§ μκ³ λ¨μ λͺ ννλ©° μ»΄ν¨ν°κ° μνν μ μλ μ ν κ°μ μΌλ ¨μ λͺ λ Ήμ΄λ€μ μμμ λ°λΌ ꡬμ±ν κ²μ μκ³ λ¦¬μ¦μ΄λΌ νλ€.
πμ€κ³
μ£Όμ΄μ§ λ¬Έμ μ 쑰건μ λ§€μ° λ€μνκΈ° λλ¬Έμ μΌλ°μ /λ²μ©μ μΈ μ€κ³ κΈ°λ²μ μ‘΄μ¬νμ§ μλλ€.
μκ³ λ¦¬μ¦ μμ± κ³Όμ : μ€κ³, νν(κΈ°μ ), μ νμ± λΆμ, ν¨μ¨μ± λΆμ
μμ¬μμ΄(greedy, νμμ ) λ°©λ²
μ ν λ¨κ³μ μ νκ³Ό μκ΄ μμ΄ κ° λ¨κ³λ§λ€ κ°μ₯ μ΅μ μ΄λΌκ³ μ¬κ²¨μ§λ κ΅λΆμ μΈ μ΅μ ν΄λ₯Ό μ νν΄λκ°λ©΄ κ²°κ³Όμ μΌλ‘ μ 체μ μΈ μ΅μ ν΄λ₯Ό ꡬν μ μμ κ²μ΄λΌλ ν¬λ§μ μΈ(μ΅μ ν΄λ₯Ό 보μ₯νμ§ λͺ»ν¨) μ λ΅μ μ·¨νλ λ°©λ².
λ¨μ : κ΅λΆμ μΈ μ΅μ ν΄κ° μ 체μ μΈ μ΅μ ν΄κ° μλ κ°λ₯μ±μ΄ λμ.
ex) κ±°μ€λ¦λ λ¬Έμ (λ¨, λμ μ μ‘λ©΄κ°κ° μΌλ°μ μΈ κ²½μ° μ΅μ ν΄λ₯Ό ꡬν μ μμ), λ°°λ λ¬Έμ (λ¨, 물체λ₯Ό μͺΌκ°€ μ μλ κ²½μ° μ΅μ ν΄λ₯Ό ꡬν μ μμ)
λΆν μ 볡(Divide and Conquer) λ°©λ²
νν₯μ μ κ·Ό λ°©λ². μ£Όμ΄μ§ λ¬Έμ μ μ λ ₯μ λμ΄μ λλ μ μμ λκΉμ§ μνμ μΌλ‘ 2κ° μ΄μμ μμ λ¬Έμ λ€λ‘ λλκ³ , μ΄λ κ² λΆν λ μμ λ¬Έμ λ€μ κ°κ° ν΄κ²°ν ν ν΄λ‘ κ²°ν©νμ¬ μλ λ¬Έμ μ ν΄λ₯Ό ꡬνλ λ°©μ.
ex) ν΅ μ λ ¬, ν©λ³ μ λ ¬, μ΄μ§ νμ
λμ νλ‘κ·Έλλ°(Dynamic Programming) λ°©λ²
μ λ ₯μ ν¬κΈ°κ° κ°μ₯ μμ λΆλΆ λ¬Έμ λΆν° ν΄λ₯Ό ꡬνμ¬ ν μ΄λΈμ μ μ₯νκ³ , μ΄λ₯Ό μ΄μ©νμ¬ μ λ ₯ ν¬κΈ°κ° λ³΄λ€ ν° λ¬Έμ μ ν΄λ₯Ό μ μ§μ μΌλ‘ λ§λ€μ΄κ°λ μν₯μ μ κ·Ό λ°©λ².
ex) νλ‘μ΄λ μκ³ λ¦¬μ¦(λͺ¨λ μ κ°μ μ΅λ¨ κ²½λ‘) λ¬Έμ , μ°μμ νλ ¬ κ³±μ λ¬Έμ , μ΅μ₯ κ³΅ν΅ λΆλΆ μμ΄ λ¬Έμ
πλΆμ
μ νμ± λΆμ
μ ν¨ν μ λ ₯μ λν΄ μ ν μκ° λ΄μ μ νν κ²°κ³Όλ₯Ό μμ±ν΄λ΄λ μ§μ λν μ¬λΆ.
ν¨μ¨μ± λΆμ
μκ³ λ¦¬μ¦ μνμ νμν μμμ μμ νκ°.
- κ³΅κ° λ³΅μ‘λ(λ©λͺ¨λ¦¬μ μ)
- μκ° λ³΅μ‘λ(μ€νμμλΆν° μλ£κΉμ§ 걸리λ μκ°)
μκ° λ³΅μ‘λ
μκ³ λ¦¬μ¦μ μν μκ°. μ λ ₯ ν¬κΈ° nμ λ°λΌ μ€νλλ μ‘°μμ μ. μκ³ λ¦¬μ¦μ κ° λ¬Έμ₯μ΄ μνλλ νμμ ν©. -> μ λ ₯ ν¬κΈ°μ ν¨μλ‘ νν.
μΌλ°μ μΌλ‘ μκ³ λ¦¬μ¦μ μκ° λ³΅μ‘λλ μ΅μ μ μν μκ°μ μ¬μ©ν¨.
μ΅μ μ μν μκ°μΌλ‘ λ°μ‘μ λ μλμ μΌλ‘ μκ³ λ¦¬μ¦ μ±λ₯μ μ°μ΄μ κ°λ¦¬κΈ° μ¬μ.(ex μΆκ·Ό μκ° μμ)
μ κ·Ό μ±λ₯
μ λ ₯ ν¬κΈ° nμ΄ λ¬΄νν 컀μ§(μ¦κ°νλ μΆμΈ)μ λ°λΌ κ²°μ λλ μ±λ₯.
- μ λ ₯ ν¬κΈ°κ° μΆ©λΆν 컀μ§μ λ°λΌ ν¨μ«κ°μ κ°μ₯ ν° μν₯μ λ―ΈμΉλ μ°¨μ(ν)μ μ°Ύμ.
- μν μκ°μ λ€νμ ν¨μμμ μ΅κ³ μ°¨νλ§μ κ³μ μμ΄ μ·¨ν΄μ νν.
- μν μκ°μ μ νν κ°μ΄ μλ μ΄λ¦Όκ°μ. -> μν μκ°μ μ¦κ° μΆμΈ νμ κ°λ₯. μκ³ λ¦¬μ¦ κ°μ μ°μ΄μ λ°μ§ μ μμ.
Big O νκΈ°λ²
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)
μ λ ₯ ν¬κΈ°κ° 컀μ§λλΌλ μν μκ°μ΄ μ²μ²ν μ¦κ°νλ μκ³ λ¦¬μ¦μ΄ μ±λ₯μ΄ μ’μ μκ³ λ¦¬μ¦μ.
μκ³ λ¦¬μ¦μ μκ° λ³΅μ‘λ ꡬνκΈ°
κΈ°λ³Έ μ°μ° μν νμμ ν© f(n)μ ꡬν ν, f(n)=O(g(n))μ λ§μ‘±νλ μ΅μ μ°¨μ ν¨μ g(n)μ μ°Ύλλ€.
-> μκ³ λ¦¬μ¦μ λͺ¨λ λ¬Έμ₯μ΄ μλ 루νμ λ°λ³΅ νμλ§μ μ‘°μ¬νμ¬ μ΅κ³ μ°¨μλ₯Ό μκ° λ³΅μ‘λλ‘ νκΈ°νλ©΄ μκ³ λ¦¬μ¦ μ±λ₯μ μ°μλ₯Ό κ°λ¦΄ μ μμ.
i = 1; // 1
while(i <= n) { // n + 1
x = x + 1; // n
i = i + 1; // n
}
μ μκ³ λ¦¬μ¦μ λνμ¬ `f(n) = 3n+2` μ΄λ―λ‘, μ΅κ³ μ°¨νμ λ½μ κ³μ μμ΄ `O(n)`μΌλ‘ νκΈ°ν μ μμ. -> 루νμ λ°λ³΅ νμμ λμΌ.
πμν(μ¬κ· recursion) μκ³ λ¦¬μ¦
μκ³ λ¦¬μ¦μ μν κ³Όμ μμ μκΈ° μμ μ μκ³ λ¦¬μ¦μ λ€μ μννλ μν.
μν μκ³ λ¦¬μ¦μ μν μκ°μ μ νμ ννλ‘ ννλλ©°, μ΄λ₯Ό νμ΄μ νμνμ ꡬν μ μμ.
- ν΅ μ λ ¬(μ΅μ ) T(n) = T(n-1) + O(n), T(1) = O(1) -> T(n) = O(n^2)
- μ΄μ§ νμ T(n) = T(n/2) + O(1), T(1) = O(1) -> T(n) = O(logn)
- ν΅ μ λ ¬(μ΅μ ), ν©λ³ μ λ ¬ T(n) = 2T(n/2) + O(n), T(1) = O(1) -> T(n) = O(nlogn)
'CS > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦] μ΄μ§ νμ(μ΄λΆ νμ) (0) | 2024.08.09 |
---|---|
[μκ³ λ¦¬μ¦] ν μ λ ¬(Heap Sort) (0) | 2024.05.31 |
[μκ³ λ¦¬μ¦] ν΅ μ λ ¬(Quick Sort) (0) | 2024.05.31 |