μκ° λ³΅μ‘λ(Time Complexity)λ μΈν ν¬κΈ°μ λΉλ‘νλ μκ³ λ¦¬μ¦μ μ€ν μκ°μ λνλ
λλ€. μκ° λ³΅μ‘λλ₯Ό μ μ΄ν΄νμ
¨λ€λ©΄ κ³΅κ° λ³΅μ‘λλ μ΄λ ΅μ§ μμ΅λλ€.
κ³΅κ° λ³΅μ‘λ(Space Complexity)λ μΈν ν¬κΈ°μ λΉλ‘ν΄μ μκ³ λ¦¬μ¦μ΄ μ¬μ©νλ λ©λͺ¨λ¦¬ 곡κ°μ λνλ
λλ€. λ¬Όλ‘ κ³΅κ° λ³΅μ‘λλ μ κ·Ό νκΈ°λ²μΌλ‘ ννν μ μκΈ° λλ¬Έμ κ°νΈνκ² Big-O νκΈ°λ²μ μ¬μ©ν μ μμ΅λλ€.
κ°λ¨ν μμ λͺ κ°μ§λ§ λ΄
μλ€.
O(1)
def product(a, b, c):
result = a * b * c
return result
Plain Text
볡μ¬
νλΌλ―Έν° a, b, cκ° μ°¨μ§νλ 곡κ°μ μ μΈνλ©΄ μΆκ°μ μΌλ‘ λ³μ resultκ° κ³΅κ°μ μ°¨μ§ν©λλ€. resultκ° μ°¨μ§νλ λ©λͺ¨λ¦¬ 곡κ°μ μΈνκ³Ό 무κ΄νκΈ° λλ¬Έμ ν¨μ productμ κ³΅κ° λ³΅μ‘λλ O(1)μ
λλ€.
O(n)
def get_every_other(my_list):
every_other = my_list[::2] # a[start : end : step]
return every_other
Python
볡μ¬
μΈν my_listμ κΈΈμ΄λ₯Ό nnμ΄λΌκ³ ν©μλ€.
νλΌλ―Έν° my_listκ° μ°¨μ§νλ 곡κ°μ μ μΈνλ©΄ μΆκ°μ μΌλ‘ λ³μ every_otherκ° κ³΅κ°μ μ°¨μ§ν©λλ€. every_otherκ° μ°¨μ§νλ 곡κ°μ μ΄λ»κ² ννν μ μμκΉμ?
리μ€νΈ every_otherμλ my_listμ μ§μ μΈλ±μ€μ κ°λ€μ΄ 볡μ¬λΌμ λ€μ΄κ°λλ€. μ½ n/2κ°μ κ°μ΄ λ€μ΄κ°λ€λ κ±°μ£ . O(n/2)μ O(n)μΌλ‘ λνλΌ μ μκΈ° λλ¬Έμ, get_every_other ν¨μμ κ³΅κ° λ³΅μ‘λλ O(n)μ
λλ€.
O(n^2)
def largest_product(my_list):
products = []
for a in my_list:
for b in my_list:
products.append(a * b)
return max(products)
Plain Text
볡μ¬
μΈν my_listμ κΈΈμ΄λ₯Ό nμ΄λΌκ³ ν©μλ€.
νλΌλ―Έν° my_listκ° μ°¨μ§νλ 곡κ°μ μ μΈνλ©΄ μΆκ°μ μΌλ‘ λ³μ products, a, bκ° κ³΅κ°μ μ°¨μ§ν©λλ€. μ°μ aμ bλ κ·Έλ₯ μ μ κ°μ λ΄κΈ° λλ¬Έμ O(1)μ΄κ² μ£ ? κ·Έλ λ€λ©΄ productsκ° μ°¨μ§νλ 곡κ°μ μ΄λ»κ² ννν μ μμκΉμ?
리μ€νΈ productsμλ my_listμμ κ°λ₯ν λͺ¨λ μ‘°ν©μ κ³±μ΄ λ€μ΄κ°λλ€. κ·Έλ λ€λ©΄ μ΄ n^2 κ°μ κ°μ΄ λ€μ΄κ°κ² μ£ ? λ°λΌμ largest_productμ κ³΅κ° λ³΅μ‘λλ O(n^2)μ
λλ€.