-
[Algorithm] μκ° λ³΅μ‘λ & κ³΅κ° λ³΅μ‘λAlgorithm 2022. 1. 12. 02:35
μκ³ λ¦¬μ¦μ νκ°νλ λ κ°μ§ μμλ
μκ° λ³΅μ‘λ (Time Comlexity)μκ³΅κ° λ³΅μ‘λ (Complexity)λ‘ λλλ€. μ΄ λ κ°μ§λ μλμ λ©λͺ¨λ¦¬ μ¬μ©λμ νκ°νλ κ²μΈλ°, μκ³ λ¦¬μ¦μ μν μκ° λΆμ κ²°κ³Όλ₯Όμκ° λ³΅μ‘λλΌ νκ³ λ©λͺ¨λ¦¬ μ¬μ©λμ λν λΆμ κ²°κ³Όλ₯Όκ³΅κ° 볡μ‘λλΌκ³ νλ€. νλ‘κ·Έλ¨μ μ§€ λμλ νμ worst caseλ₯Ό κ³ λ €ν΄μΌνλ€. κ·Έλ κΈ° λλ¬Έμ μκ° λ³΅μ‘λμ κ³΅κ° λ³΅μ‘λλ λ³΄ν΅ Big-Oh νκΈ°λ²μ μ΄μ©ν΄μ λνλΈλ€.
γ €1. μκ° λ³΅μ‘λ (Time Complexity)
μκ° λ³΅μ‘λλ μκ³ λ¦¬μ¦μ μν μκ° λΆμ κ²°κ³Όμ΄λ€. μκ° λ³΅μ‘λλ₯Ό νκ°ν λμλ λ¨Όμ μ°μ°μ νμλ₯Ό μΈκ³ , μ²λ¦¬ν΄μΌ ν λ°μ΄ν°μ μ nμ λν μ°μ°νμμ ν¨μ T(n)μ λ§λ λ€.
μκ° λ³΅μ‘λλ λ€μκ³Ό κ°μ΄ 3κ°μ§λ‘ λλλλ°, μΌλ°μ μΌλ‘ Big-Oh νκΈ°λ²μ μ¬μ©νμ¬ μκ° λ³΅μ‘λλ₯Ό λνλΈλ€.
γ €Best Case (μ΅μμ κ²½μ°)
- Big-Omega νκΈ°λ² μ¬μ©
- μ΅μμ κ²½μ°λ‘, μ΅μλ‘ κ±Έλ¦¬λ μκ°μ μλ―Ένλ€.
Worst Case (μ΅μ μ κ²½μ°)
- Big-Oh νκΈ°λ² μ¬μ©
- μ΅μ μ κ²½μ°λ‘, μ΅λ μ€λ 걸리λ μκ°μ μλ―Ένλ€.
Average Case (νκ· μ μΈ κ²½μ°)
- Big-Theta νκΈ°λ² μ¬μ©
- νκ· μ μΈ κ²½μ°λ‘, νκ· μ μΈ μκ°μ μλ―Ένλ€.
γ €

μ μ¬μ§μ μκ° λ³΅μ‘λ κ·ΈλνμΈλ°, μΌλ°μ μΌλ‘ μκ° λ³΅μ‘λκ° O(nlogn) μ λλ λμ΄μΌ μκ³ λ¦¬μ¦ μ±λ₯μ΄ μλ―Έμλ€κ³ λ§ν μ μλ€.
μκ° λ³΅μ‘λ μμλ λ€μκ³Ό κ°λ€.

Big-Oh νκΈ°λ² (Notation)
ν¨μ f(n)κ³Ό g(n)μ΄ μ£Όμ΄μ‘μ λ, λͺ¨λ n β₯ Kμ λνμ¬ f(n) β€ Cg(n)μ λ§μ‘±νλ λ κ°μ μμ C, Kκ° μ‘΄μ¬νλ©΄ f(n)μ Big-Ohλ O(g(n))μ΄λ€.
μμμ λ³΄κ³ Big-Ohλ₯Ό ꡬνλ λ°©λ²μ μ΄λ ΅μ§ μλ€. T(n)μ΄ λ€νμμΌλ‘ λμ΄μμ κ²½μ°, μ΅κ³ μ°¨νμ μ°¨μκ° Big-Ohκ° λλ€. μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°λ€.
γ €
γ €μκ° λ³΅μ‘λ κ³μ° μμ
μκ° λ³΅μ‘λ = Sum (Frequency * step count (or step execution))
μμ 1
func ex1(n: Int) { for i in 0..<n { // n + 1 let a = i // n } } // μκ° λ³΅μ‘λ = 2n + 1 == nμμ 2
func ex2(n: Int) { for i in stride(from: 0, to: n, by: 2) { // (n / 1) + 1 let a = i // (n / 2) } } // μκ° λ³΅μ‘λ = n + 1 == nμμ 3
func ex3(n: Int) { for i in stride(from: 0, to: n * n, by: 1) { // (n^2 + 1) let a = i // n^2 } } // μκ° λ³΅μ‘λ = n^2 + 1 + n^2 = 2n^2 + 1 == n^2μμ 4
func ex4(n: Int) { for i in 0..<n { // n + 1 for j in 0..<i { // {n(n+1)} / 2 let a = i // {n(n+1)} / 2 } } } // μκ° λ³΅μ‘λ = n^2 + 2n + 1 == n^2
2. κ³΅κ° λ³΅μ‘λ (Space Complexity)
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algorithm] λ°±μ€ 1157 λ¨μ΄ κ³΅λΆ (Swift/C++) (0) 2022.01.31 [Algorithm] λ°±μ€ 10809 μνλ²³ μ°ΎκΈ°(Swift/C++) (0) 2022.01.30 [Algorithm] λ°±μ€ 11654 μμ€ν€μ½λ (Swift/C++) (0) 2022.01.30 [Algorithm] μκ³ λ¦¬μ¦ ν μ 리 (C++) (0) 2022.01.05 [Algorithm] μκ³ λ¦¬μ¦ ν μ 리 (Swift) (0) 2022.01.05