π‘ Big Oλ μ»΄ν¨ν° μκ³ λ¦¬μ¦μμ λ§€μ° μ€μν κ°λ μΌλ‘, λ κ°μ μ½λλ₯Ό λΉκ΅νλ λ°©λ²λ‘ μ΄λ€.
π‘ μκ°λ³΅μ‘λ : μΈ‘μ κ°λ₯ν μ λ
- μ΄λ μκ° λ³΅μ‘λλ μκ°μΌλ‘ μΈ‘μ λμ§ μλλ€. λμ 무μΈκ°λ₯Ό μλ£νλ λ° νμν μμ νμλ‘ μΈ‘μ λλ€.
π‘ 곡κ°λ³΅μ‘λ
- ν΄λΉ μ½λλ€μ μμμκ° λ³΄λ¨, ν΄λΉ μ½λλ€μ΄ μλνλ©΄μ μ°¨μ§νλ λ©λͺ¨λ¦¬μμ 곡κ°μ λν΄ λ λμ μ°μ μμλ₯Ό λλ κ².
ex) λ§μ½, 1-7 λ‘ λ λ°°μ΄μμ μ«μλ₯Ό μ°Ύμ κ²½μ°...
μ΅κ³ μ κ²½μ°λ 0λ² μΈλ±μ€λ₯Ό μ°Ύλ κ²½μ°μ΄κ³ , μ΅μ μ κ²½μ°λ 6λ² μΈλ±μ€μ΄λ€.
κ·Έλ¦¬κ³ νκ· μ μΈ κ²½μ°λ 3λ² μΈλ±μ€λ₯Ό μ°Ύλ κ²½μ°μ΄λ€.
- Ξ©(μ€λ©κ°) : μ΅κ³ μ κ²½μ°
- ΞΈ(μΈν) : νκ· μ μΈ κ²½μ°
- Ξ(μ€λ―Έν¬λ‘ - oλ‘λ λ μ μλ €μ Έ μμ) : μ΅μ μ κ²½μ°
π‘ O(n)μ?
- O(n)μ μκ³ λ¦¬μ¦μ μ€ν μκ°μ΄ μ λ ₯ ν¬κΈ°(n)μ μ§μ λΉλ‘ν λ μ¬μ©λλ νν
- 'μ§μ λΉλ‘(proportional)'λ, μ λ ₯ ν¬κΈ°κ° 2λ°°λ‘ μ¦κ°νλ©΄ μ€ν μκ°λ λλ΅ 2λ°°λ‘ μ¦κ°νλ€λ λ»
- O(n)μ μ ν μκ° λ³΅μ‘λ(linear time complexity)λ₯Ό λνλΈλ€.
π‘ μ€μν μ ,
- O(n)μ΄ μ νμ μΈ κ΄κ³λ₯Ό λνλΈλ€λ κ²μ΄μ§, μ€ν μκ°μ΄ νμ nκ³Ό μ νν λμΌνλ€λ κ²μ μλ―Ένμ§λ μλλ€λ μ μ΄λ€.
- μλ₯Ό λ€μ΄, μκ³ λ¦¬μ¦μ΄ nκ°μ μ λ ₯μ λν΄ 2nλ²μ μ°μ°μ μννλ€κ³ ν΄λ, μ΄λ μ¬μ ν O(n)μΌλ‘ λΆλ₯λλ€.
- μλνλ©΄, ν° κ΄μ μμ 보면 μ€ν μκ°μ΄ μ λ ₯ ν¬κΈ°μ λΉλ‘νκΈ° λλ¬Έμ΄λ€.
def print_items(n) : for i in range(n) : print(i)
- π‘ κ·Έλνμμ 보μ΄λ λ°μ κ°μ΄, O(n)μ κ·Έλνλ μ§μ μ κ·Έλ¦°λ€.
- μ΄ μ§μ μ κΈ°μΈκΈ°λ μκ³ λ¦¬μ¦μ΄ μ λ ₯μ λν΄ μννλ μ°μ°μ 'λΉμ¨'μ λνλΈλ€.
- νμ§λ§ λͺ¨λ O(n) μκ³ λ¦¬μ¦μ΄ λμΌν κΈ°μΈκΈ°λ₯Ό κ°μ§λ κ²μ μλλ©°, κΈ°μΈκΈ°λ μκ³ λ¦¬μ¦μ νΉμ ꡬνμ λ°λΌ λ¬λΌμ§ μ μλ€.
- μ€μν κ²μ, nμ΄ μ»€μ§μ λ°λΌ μ€ν μκ°μ΄ μ νμ μΌλ‘ μ¦κ°νλ€λ μ μ΄λ€.
π‘ Drop Constantsμ Big O νκΈ°λ²μ λ¨μνν μ μλ λ°©λ² μ€ νλ.
def print_items(n) : for i in range(n) : print(i) for j in range(n) : print(j)
- μ μ½λλ λκ°μ μμ μ λ λ² λ°λ³΅νλ€. μ¦ n + n = 2nλ² λ°λ³΅λλ μ½λμ§λ§ νκΈ°ν λλ O(2n)μ΄ μλλΌ O(n)μΌλ‘ μμ±νλ€. μ΄λ₯Ό Drop Constants λΌκ³ νλ€.
def print_items(n) : for i in range(n) : for j in range(n) : print(i, j)
- ν΄λΉ μ½λλ₯Ό μΆλ ₯ν΄λ³΄λ©΄, μ΄ 100λ² μ¦ n * n λ² μΆλ ₯λλ€. μ΄λ O(n^2) μ΄λ€.
π‘ Drop Non-Dominantsλ Big O νκΈ°λ²μ λ¨μνν μ μλ λ°©λ² μ€ νλ.
def print_items(n): for i in range(n) : for i in range(n) : print(i, j) for k in range(n) : print(k)
μ΄ μ½λλ O(n^2), O(n)μ νλ‘κ·Έλλ°μ΄ μ€μ²©λμλ€. μ¦ μΆλ ₯λ νλͺ©μ μ΄ν©μ O(n^2 + n) μ΄λ€.
O(n^2 + n) κ°μ κ²½μ°, n μ΄ μ μλ―Ένκ² μ»€μ§ κ²½μ° nμ 무μν΄λ μ’μ μ λμ΄κΈ°μ, O(n^2 + n)μ O(n^2) μΌλ‘ νμνλ€.
π£οΈ (n^2) : dominant term, n : undominant term