μ²μ μκ³ λ¦¬μ¦ λΆλ₯ κΈμ μμ±νκ² λμμ΅λλ€(λκ·Ό)
μλ
(2022) μ΄λ§λμ―€ νκ΅μμ νμ΅νλ μκ³ λ¦¬μ¦μ μκ°λ³΅μ‘λμ κ΄ν λ΄μ©μ
λλ€.
μ½λ©ν μ€νΈκ° μ΅μν΄μ§λ©΄μ ν¨μ¨μ±μ μꡬνλ λ¬Έμ λ€κ³Ό λ§λ±λ¨λ¦¬κ² λμλλ°,
μ΄λ μμμΌ ν κΈ°μ΄ κ°λ μ΄ λ°λ‘ μκ°λ³΅μ‘λμ λλ€.
λ΄κ° μ§ μ½λκ° μ λ ₯ λλΉ μΌλ§νΌμ μκ°μ΄ νμνκ°λ₯Ό κ³μ°νμ¬
ν¨μ¨μ±μ νλ¨νκ³ , λΉν¨μ¨μ μ΄λΌλ©΄ μ΄λ€ λΆλΆμ μμ ν μ§ μκ°ν΄ λ³Ό μ μκΈ° λλ¬Έμ λλ€.
λͺ©μ°¨
1. μ μ & νκΈ°λ²
μν€ λ°±κ³Όμμ μΈμ©ν΄ μ¨ μ»΄ν¨ν°κ³Όνμμ μκ°λ³΅μ‘λμ μ μ
μ λ ₯μ λνλ΄λ λ¬Έμμ΄ κΈΈμ΄μ ν¨μλ‘μ μλνλ μκ³ λ¦¬μ¦μ μ·¨ν΄ μκ°μ μ λννλ κ²
λ€μμ μκ°λ³΅μ‘λμ 3κ°μ§ ννλ²μ λλ€.
μ΅μ μ μ€νμκ° κ°μλ ν¨μ¨μ±μ ν₯μμν€λ―λ‘ λΉ μ€ ννλ² μ€μ¬μΌλ‘ μ€λͺ νλλ‘ νκ² μ΅λλ€.
μκ°λ³΅μ‘λ | λ°μ | μ€λͺ | νκΈ°λ² μμ |
Big-O | λΉ μ€ | κ°μ₯λ§μ΄ μ¬μ©λλ ννμΌλ‘ μ΅μ μ€νμκ°μ λνλΈλ€ | O(N) |
Ω | μ€λ©κ° | μ΅μ μ€νμκ°μ λνλΈλ€ | Ω(N) |
Θ | μΈν | νκ· μ€νμκ°μ λνλΈλ€ | Θ(N) |
2. O(1)
a = 1
b = 2
print(a + b)
O(1)μ μ΄λ€ μ λ ₯μλ νμ κ°μ μκ°μ κ°λ κ²½μ°λ₯Ό λ§νλ€.
μ μ½λλ₯Ό 보면 a, b λ³μμ λμ μ°μ° 2νμ print μΆλ ₯μ°μ° 1ν, a+b μ°μ° 1νλ‘
μ΄ 4ν μ°μ°μ μννλ€.
μ¦ O(4)λ‘ ννλ μ μλλ° μμ κ°μ μ μΈνκ³ νννλ―λ‘ O(1)μ΄ λλ€.
3. O(N)
sum = 0
for i in range(N):
sum += 1
O(N)μ μ λ ₯κ³Ό λΉλ‘ν μκ°μ λνλΈλ€.
sum = 0 λμ μ°μ° 1ν, forλ¬Έ Nν, sum += 1 Nνλ‘
O(2N +1)λ‘ ννν μ μλλ°
μμ μΈκΈνλ―μ΄ μμ κ°μ μ μΈνκ³ νννλ―λ‘
ν΄λΉ μ½λλ O(N)μ μκ°λ³΅μ‘λλ₯Ό κ°μ§κ³ μλ€.
sum = 0
for i in range(1, N+1, 2):
for j in range(i):
sum += 1
μ μ½λλ₯Ό 보면 iκ° 1λΆν° iμ© μ»€μ§λ©° NκΉμ§ λ°λ³΅νλ€. μ¦ N==5λΌλ©΄
1, 2, 4λ₯Ό, μ¦ logNλ² μννλ κ²μ΄λ€.
ν΄λΉ μνλ§λ€ jκ° iν μνλλ―λ‘ 1+2+4+8+...(N/4)+(N/2)+N=2N
i==1 μΌ λ 1ν
i==2 μΌ λ 2ν
i==4 μΌ λ 4ν
i==8 μΌ λ 8ν
...
λͺ¨λ κ²½μ°λ₯Ό ν©μΉλ©΄ 1+2+4+8+...(N/4)+(N/2)+N=2N (λ±μ°¨μμ΄μ ν©) μ΄λ―λ‘
μμλ₯Ό μ μΈν O(N)μ μκ°λ³΅μ‘λλ₯Ό κ°κ³ μλ€.
4. O(N²)
sum = 0
for i in range(N):
for j in range(N):
sum += 1
2μ€ forλ¬Έμ μ νμ μΈ O(N²) μκ°λ³΅μ‘λ ννμ΄λ€.
iκ° Nν, jκ° iλ§λ€ Nν μ΄λ―λ‘ N+N+N+....+N=N² μ΄λ€.
sumλ jμ λμΌνκ² μνλλ―λ‘ μμλ‘ μ²λ¦¬λλ€.
sum = 0
for i in range(N):
for j in range(i):
sum += 1
μ΄μκ°μ μ½λλ μκ°λ³΅μ‘λκ° μ΄λ»κ² λ κΉ?
μμͺ½ forλ¬Έμ΄ iλ²λ§ μννλ―λ‘ O(N)λ³΄λ€ μμκΉ?
κ·Έλ μ§ μλ€.
κ°μ λ§₯λ½μΌλ‘ sum μ°μ°μ μ μΈνκ³ μκ°ν΄λ³΄λ©΄
iκ° Nν, iλ§λ€ jκ° iν λ°λ³΅νλ©΄ 0+1+2+3+...+(N-1)=N*(N-1)/2μ΄λ€.
i==0 μΌ λ 0ν
i==1 μΌ λ 1ν
i==2 μΌ λ 2ν
...
λͺ¨λ μ°μ°μ κ³μ°νμ λ N*(N-1)/2 (λ±μ°¨μμ΄)μ΄λΌλ κ²°κ³Όκ° λμ¨λ€.
5. O(NlogN)
O(logN)μ μ΄μ§νΈλ¦¬μ μ νμ μκ°λ³΅μ‘λμ΄λ€.
μ΄μ§νΈλ¦¬μ μκ°λ³΅μ‘λ κ³μ°μ λν΄ μ μ λ¦¬ν΄ λμ μ΄ κΈμ μ°Έκ³ νκΈ° λ°λλ€.
sum = 0
for i in range(1, N+1, 2):
for j in range(N):
sum += 1
μ μ½λλ₯Ό 보면 iκ° 1λΆν° iμ© μ»€μ§λ©° NκΉμ§ λ°λ³΅νλ€. μ¦ N==5λΌλ©΄
1, 2, 4λ₯Ό, μ¦ logNλ² μννλ κ²μ΄λ€.
ν΄λΉ μνλ§λ€ jκ° Nν μνλλ―λ‘ N+N+N+...+N=N*logN
κ²°κ΅ μκ° λ³΅μ‘λλ O(NlogN)μ΄ λλ€.
REFERENCE
https://ko.wikipedia.org/wiki/%EC%8B%9C%EA%B0%84_%EB%B3%B5%EC%9E%A1%EB%8F%84
https://xodud2972.tistory.com/60
https://neos518.tistory.com/145
https://mathbang.net/609#gsc.tab=0
'π§ͺComputer Science > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦] μ΅μ μ€ν¨λ νΈλ¦¬ μκ³ λ¦¬μ¦ | ν¬λ£¨μ€μΉΌ/νλ¦Ό μκ³ λ¦¬μ¦ (0) | 2023.05.29 |
---|---|
[μκ³ λ¦¬μ¦] μ΅λ¨ κ²½λ‘ μκ³ λ¦¬μ¦ | λ€μ΅μ€νΈλΌ | νλ‘μ΄λ μμ (0) | 2023.05.17 |