π¦ 1. Big-O Notation
λ€μ΄κ°λ©°
Big - O : μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ λνλ΄λ μ§ν νΉμ μΈμ΄
μκ° λ³΅μ‘λ
μ κ·Όμ μ€ν μκ°, νΉμ Big - O μκ°μ λν κ°λ μ΄λ€
O(s) : μ¨λΌμΈ μ μ‘
νμΌ ν¬κΈ°κ° 컀μ§μ λ°λΌ μ μ‘ μκ°μ΄ μ νμ μΌλ‘ μ¦κ°
O(1) : λΉνκΈ°λ‘ μ§μ μ μ‘
νμΌ ν¬κΈ°μ κ΄κ³ μμ΄ μμ μκ°λ§νΌ μμ
s κ° μ μ°¨ 컀μ§λ€λ³΄λ©΄ O(1) μ λλ μκ°μ΄ μ¨λ€.
big-O, big-Ξ, big-Ξ©
O : μκ°μ μνμ λνλΈλ€. μλ₯Ό λ€λ©΄ λ°°μ΄μ λͺ¨λ κ°μ μΆλ ₯νλ μκ³ λ¦¬μ¦μ O(N) μΌλ‘ ννν μ μλ€.
Ξ© : λ±κ° κ°λ νΉμ μκ°μ ννμ λνλΈλ€.
Ξ : O μ Ξ© λ₯Ό λ λ€ μλ―Ένλ€. μ΄λ€ μκ³ λ¦¬μ¦μ μν μκ°μ΄ O(N) μ΄μ Ξ©(N) μ΄λΌλ©΄ μν μκ°μ Ξ(N) μΌλ‘ λνλΌ μ μλ€.
μ΅μ μ κ²½μ°, μ΅μ μ κ²½μ°, νκ· μ μΈ κ²½μ°
ν΅ μ λ ¬μ ν΅ν μμλ₯Ό νμΈν΄λ³΄μ.
- μ΅μ μ κ²½μ° : λ§μ½ λͺ¨λ μμκ° λμΌνλ€λ©΄ ν λ² μννκ³ λλκΈ° λλ¬Έμ μν μκ°μ O(N) μ΄λΌκ³ ν μ μλ€.
- μ΅μ μ κ²½μ° : λ°°μ΄μ΄ μμμΌλ‘ μ λ ¬λμ΄ μκ³ λΆλΆ λ°°μ΄μ 첫 μμλ₯Ό νμ μΆμΌλ‘ μ‘λλ€λ©΄ μν μκ°μ O(N^2) μ΄λΌκ³ ν μ μλ€.
- νκ· μ μΈ κ²½μ° : μ΅μ , μ΅μ μ κ²½μ°λ μμ£Ό λ°μνμ§ μκΈ° λλ¬Έμ νκ· μ μΌλ‘ O(NlogN) μ΄λΌκ³ ν μ μλ€.
곡κ°λ³΅μ‘λ
μκ³ λ¦¬μ¦μμλ μκ° λΏλ§ μλλΌ λ©λͺ¨λ¦¬ 곡κ°λ μ κ²½μ μ¨μΌ νλ€.
κ³΅κ° λ³΅μ‘λλ μκ° λ³΅μ‘λμ ννμ μ λ¬λ¦¬λ κ°λ μ΄λ€.
μλ₯Ό λ€μ΄ ν¬κΈ° NμΈ λ°°μ΄μ λ§λλλ° O(N) μ 곡κ°μ΄ νμνλ€.
μ¬κ· νΈμΆμμ μ¬μ©νλ μ€ν 곡κ°λ κ³΅κ° λ³΅μ‘λ κ³μ°μ ν¬ν¨λλ€.
μ΄ ν¨μλ νΈμΆλ λλ§λ€ μ€νμ κΉμ΄κ° κΉμ΄μ§κΈ° λλ¬Έμ O(N) 곡κ°μ μ¬μ©νλ€.
μ΄ μ½λλ ν¨μλ₯Ό λλ΅ n λ² μ€ννμ§λ§ νΈμΆ μ€νμ λμμ μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ O(1) 곡κ°μ μ¬μ©νλ€.
μμνμ 무μνλΌ
O(2N) μΌλ‘ νκΈ°λμ΄μΌ ν μκ³ λ¦¬μ¦μ μ€μ λ‘ O(N) μΌλ‘ νννλ€.
μ§λ°°μ μ΄μ§ μμ νμ 무μνλΌ
μμ μμνμ 무μν΄λ λλ€κ³ μΈκΈνλ€.
λ°λΌμ O(N^2 + N^2) μ O(N^2) κ° λλ€.
μ¬λ¬ λΆλΆμΌλ‘ μ΄λ£¨μ΄μ§ μκ³ λ¦¬μ¦: λ§μ vs κ³±μ
μ΄λ€ μκ³ λ¦¬μ¦μ΄ λ λ¨κ³λ‘ μ΄λ£¨μ΄μ Έ μλ€κ³ ν λ, μ΄λ€ κ²½μ°μ μνμκ°μ λνκ³ κ³±ν΄μΌ ν κΉ
μΌμͺ½μμ A μΌμ ν λ€μ B μΌμ νκΈ° λλ¬Έμ μνμκ°μ O(A+B) μ΄λ€
μ€λ₯Έμͺ½μμ Aμ κ° μμμ λν΄ B μΌμ μννκΈ° λλ¬Έμ μνμκ°μ O(AB) μ΄λ€
μ¦, λ§μ½ μκ³ λ¦¬μ¦μ΄ A μΌμ λͺ¨λ λλ§μΉ ν B μΌμ μννλΌλ ννλΌλ©΄ A + B μ¬μΌ νλ€.
λ§μ½ μκ³ λ¦¬μ¦μ΄ A μΌμ ν λλ§λ€ B μΌμ μνν΄μΌ νλ€λ©΄ A * B μ¬μΌ νλ€.
μνμκ°
ArrayList λ μμ μ½μ μ νμμ λ°λΌ λ°°μ΄ ν¬κΈ°λ₯Ό μ‘°μ νλ μλ£κ΅¬μ‘°μ΄λ€.
λ°°μ΄μ κ°μ© 곡κ°μ΄ μ‘΄μ¬νλ©΄ μ½μ μ°μ°μ μνμκ°μ O(1) μ΄λ€
λ°°μ΄μ΄ κ°λ μ°¨ μμ λ μ½μ νλ €λ©΄ λ°°μ΄μ ν¬κΈ°λ₯Ό 2N μΌλ‘ μλ‘ μ‘°μ νκ³ λͺ¨λ μμλ₯Ό 볡μ¬ν΄μΌ νλ―λ‘ μνμκ°μ O(N) μ΄λ€
νμ§λ§ μ΅μ μ κ²½μ°μΈ O(N) μ μμ£Ό λ°μνμ§ μκΈ° λλ¬Έμ μνμκ°μ λΆν μνν΄μΌ νλ€.
λ°λΌμ X κ°μ μμλ₯Ό μ½μ νλλ° κ±Έλ¦¬λ μκ°μ O(2X) β O(1) μ΄λ€
log N μνμκ°
μ΄μ§ νμκ³Ό κ· ν μ΄μ§ νμ νΈλ¦¬μ μμλ₯Ό μ°Ύλ μν μκ°μ O(log N) μ΄λ€.
μ²μμλ μμ Nκ°κ° λ€μ΄μλ λ°°μ΄μμ μμνκ³ ν λ¨κ³λ§λ€ νμν μμμ κ°μκ° N/2 λ‘ μ€μ΄λ λ€.
λ°λλ‘ μκ°νλ©΄ 2λ₯Ό λͺ λ² κ³±ν΄μΌ Nμ΄ λλκ°?
μ¦, 2^k = N μ λ§μ‘±νλ k λ 무μμΈκ°? λ°λ‘ λ‘κ·ΈλΌκ³ ν μ μλ€
μ¬κ·μ μΌλ‘ μν μκ° κ΅¬νκΈ°
μ΄ ν¨μμ μκ° λ³΅μ‘λλ O(N^2) μ΄ μλλ€.
μν μκ°μ μΆμΈ‘νμ§ λ§κ³ μ½λλ₯Ό νλμ© μ½μ΄λ΄μΌ νλ€.
νΈλ¦¬μ κΉμ΄κ° N μ΄κ³ κ° λ Έλλ λ κ°μ μμ λ Έλλ₯Ό κ°μ§κ³ μλ€.
λ°λΌμ κΉμ΄κ° ν λ¨κ³ κΉμ΄μ§ λ λ§λ€ λ λ°° λ§μ λ Έλλ₯Ό νΈμΆνκ² λλ€.
λ°λΌμ μ 체 λ Έλμ κ°―μλ 2^(N-1) - 1 μ΄ λλ€.
κ·Έλμ λ³΄ν΅ μ¬κ· ν¨μμ μνμκ°μ O(λΆκΈ°^κΉμ΄) κ° λλ€.
κ²°λ‘ μ μΌλ‘ μ ν¨μμ μν μκ°μ O(2^N) μ΄ λλ€.
κ³΅κ° λ³΅μ‘λλ O(N) μ΄λ€.
μ 체 λ Έλμ κ°―μλ O(2^N) κ° μ΄μ§λ§ νΉμ μκ°μ μ¬μ©νλ 곡κ°μ ν¬κΈ°λ O(N) μ΄λ€.