Home
>
CS
>
2024
>
πΎ [CS] μκ³ λ¦¬μ¦μ μκ° λ³΅μ‘λ(Time Complexity)λ 무μμΌκΉμ?
CS
πΎ [CS] μκ³ λ¦¬μ¦μ μκ° λ³΅μ‘λ(Time Complexity)λ 무μμΌκΉμ?
- μκ° λ³΅μ‘λ(Time Complexity)λ μκ³ λ¦¬μ¦μ΄ μ
λ ₯ ν¬κΈ°μ λ°λΌ μ€ννλ μ°μ°μ μλ₯Ό μΈ‘μ νλ μ§νλ‘, μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ νκ°νλ λ° μ¬μ©λ©λλ€.
- μκ° λ³΅μ‘λ(Time Complexity)λ μ£Όλ‘ μ
λ ₯ ν¬κΈ°(n)κ° μ»€μ§μλ‘ μκ³ λ¦¬μ¦μ μ€νμκ°μ΄ μΌλ§λ 빨리 μ¦κ°νλ μ§λ₯Ό λνλ΄λ©°, λΉ
-μ€ νκΈ°λ²(Big-O Notaion)μΌλ‘ ννλ©λλ€.
1οΈβ£ μ μκ° λ³΅μ‘λ(Time Complexity)κ° μ€μνκ°μ?
1οΈβ£ ν¨μ¨μ μΈ μκ³ λ¦¬μ¦ μ€κ³.
- μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ νκ°ν λ, μ
λ ₯ λ°μ΄ν°μ ν¬κΈ°κ° 컀μ§μλ‘ μΌλ§λ λΉ λ₯΄κ² μ€ν λλμ§λ₯Ό κ³ λ €ν΄μΌ ν©λλ€.
- μκ° λ³΅μ‘λ(Time Complexity)λ₯Ό ν΅ν΄ μκ³ λ¦¬μ¦(Algorithm)μ μ±λ₯μ λΉκ΅νκ³ , λ λμ μκ³ λ¦¬μ¦(Algorithm)μ μ νν μ μμ΅λλ€.
2οΈβ£ λκ·λͺ¨ λ°μ΄ν° μ²λ¦¬.
- μ€μ νλ‘κ·Έλ¨μ λκ·λͺ¨ λ°μ΄ν°λ₯Ό μ²λ¦¬ν΄μΌ ν λκ° λ§μ΅λλ€.
- μκ° λ³΅μ‘λ(Time Complexity)κ° λμ μκ³ λ¦¬μ¦(Algorithm)μ ν° μ
λ ₯μ μ²λ¦¬ν λ μ€ν μκ°μ΄ ν¬κ² μ¦κ°νμ¬ μ±λ₯μ΄ μ νλ μ μμ΅λλ€.
3οΈβ£ μ±λ₯ μμΈ‘.
- μκ° λ³΅μ‘λ(Time Complexity)λ₯Ό μλ©΄ μ
λ ₯ ν¬κΈ° λ³νμ λ°λ₯Έ μκ³ λ¦¬μ¦μ μ±λ₯μ μμΈ‘ν μ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ μ΅μ νν λΆλΆμ μλ³νκ³ , λ ν¨μ¨μ μΈ μ½λλ‘ κ°μ ν μ μμ΅λλ€.
2οΈβ£ μκ° λ³΅μ‘λ(Time Complexity)μ κΈ°λ³Έ κ°λ
.
- μκ° λ³΅μ‘λ(Time Complexity)λ μ
λ ₯ ν¬κΈ°(n)μ λ°λΌ μκ³ λ¦¬μ¦μ΄ μνν΄μΌ νλ κΈ°λ³Έ μ°μ°μ μλ₯Ό λνλ
λλ€.
- μΌλ°μ μΌλ‘ μκ³ λ¦¬μ¦μ μ€ν μκ°μ μ λμ μΈ μ΄ λ¨μλ‘ μΈ‘μ νμ§ μκ³ , μ°μ° νμλ‘ μΆμννμ¬ ννν©λλ€.
- μ΄λ νλμ¨μ΄ μ±λ₯μ λ°λΌ μ€μ μκ°μ λ€λ₯Ό μ μμ§λ§, μ°μ° νμλ λμΌνκΈ° λλ¬Έμ
λλ€.
- μκ° λ³΅μ‘λ(Time Complexity)λ μ΅μ
μ κ²½μ°λ₯Ό κΈ°μ€μΌλ‘ νλ κ²μ΄ μΌλ°μ μ΄λ©°, μ΄λ μκ³ λ¦¬μ¦(Algorithm)μ μ±λ₯μ 보μ₯νλ λ° λμμ΄ λ©λλ€.
3οΈβ£ λΉ
-μ€ νκΈ°λ²(Big-O Notation)
-
λΉ
-μ€ νκΈ°λ²(Big-O Notation)μ μκ° λ³΅μ‘λ(Time Complexity)λ₯Ό νννλ λ°©μμΌλ‘, μ
λ ₯ ν¬κΈ°(n)κ° μ¦κ°ν λ μκ³ λ¦¬μ¦μ μ€ν μκ°μ΄ μΌλ§λ λΉ λ₯΄κ² μ¦κ°νλμ§λ₯Ό λνλ
λλ€.
1οΈβ£ μ£Όμ λΉ
-μ€ νκΈ°λ².
1οΈβ£ O(1) π μμ μκ°(Constant Time)
- μκ³ λ¦¬μ¦μ μ€ν μ¬κ°μ΄ μ
λ ₯ ν¬κΈ°μ μκ΄μ
μ μΌμ ν©λλ€.
- μ: λ°°μ΄μ νΉμ μΈλ±μ€μ μ κ·ΌνκΈ°(μ:
arr[0]
)
2οΈβ£ O(lon g) π λ‘κ·Έ μκ°(Longarithmic Time)
- μ
λ ₯ ν¬κΈ°κ° μ»€μ§ μλ‘ μ€ν μκ°μ΄ μλ§νκ² μ¦κ°ν©λλ€.
- μ: μ΄μ§ νμ(Binary Search)
3οΈβ£ O(n) π μ ν μκ°(Linear Time)
- μ
λ ₯ ν¬κΈ°μ λΉλ‘νμ¬ μ€ν μκ°μ΄ μ¦κ°ν©λλ€.
- μ: λ°°μ΄μμ νΉμ κ°μ μ°ΎκΈ° μν΄ λͺ¨λ μμλ₯Ό κ²μ¬νλ κ²½μ°.
4οΈβ£ O(n log n) π μ ν λ‘κ·Έ μκ°(Linearithmic Time)
- μ ν μκ°λ³΄λ€ λ 볡μ‘ν μκ° λ³΅μ‘λ.
- μΌλ°μ μΌλ‘ ν¨μ¨μ μΈ μ λ ¬ μκ³ λ¦¬μ¦μμ λ°μν©λλ€.
- μ: ν΅ μ λ ¬(Quick Sort), λ³ν© μ λ ¬(Merge Sort)
5οΈβ£ O(n^2) π μ΄μ°¨ μκ°(Quadratic Time)
- μ
λ ₯ ν¬κΈ°μ λν΄ μ κ³±μ λΉλ‘νμ¬ μ€ν μκ°μ΄ μ¦κ°ν©λλ€.
- μΌλ°μ μΌλ‘ μ€μ²©λ λ°λ³΅λ¬Έμμ λ°μν©λλ€.
- μ: λ²λΈ μ λ ¬(Bubble Sort), μ½μ
μ λ ¬(Insertion Sort)
6οΈβ£ O(2^n) π μ§μ μκ°(Exponential Time)
-
μ
λ ₯ ν¬κΈ°κ° 컀μ§μλ‘ μ€ν μκ°μ΄ μ§μμ μΌλ‘ μ¦κ°ν©λλ€.
- λ³΄ν΅ μ
λ ₯ ν¬κΈ°κ° μμ λλ§ μ¬μ©ν μ μμ΅λλ€.
- μ: νΌλ³΄λμΉ μμ΄μ μ¬κ·μ μΌλ‘ κ³μ°νλ μκ³ λ¦¬μ¦
7οΈβ£ O(n!) π ν©ν λ¦¬μΌ μκ°(Factorial Time)
-
μ
λ ₯ ν¬κΈ°κ° 컀μ§μλ‘ μ€ν μκ°μ΄ λ§€μ° λΉ λ₯΄κ² μ¦κ°ν©λλ€.
- μ£Όλ‘ λͺ¨λ κ°λ₯ν μμ΄μ κ³μ°νλ μκ³ λ¦¬μ¦μμ λ°μν©λλ€.
- μ: μμ΄(permutation) μμ±.
4οΈβ£ μκ° λ³΅μ‘λμ μμ.
1οΈβ£ O(1) π μμ μκ°.
int getFirstElement(int[] arr) {
return arr[0]; // μ
λ ₯ ν¬κΈ°μ μκ΄μμ΄ μΌμ ν μκ°
}
2οΈβ£ O(n) π μ ν μκ°.
int sum(int[] arr) {
int sum = 0;
for (int num : arr) {
sum += num; // λ°°μ΄μ λͺ¨λ μμλ₯Ό μν
}
return sum;
}
3οΈβ£ O(n^2) π μ΄μ°¨ μκ°.
void printPairs(int[] arr) {
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr.length; j++) {
System.out.println(arr[i] + ", " + arr[j]); // μ€μ²©λ λ°λ³΅λ¬Έ
}
}
}
5οΈβ£ μκ° λ³΅μ‘λ λΆμ λ°©λ².
1οΈβ£ λ°λ³΅λ¬Έ.
- λ°λ³΅λ¬Έμ΄ ν λ² μ€νλ λλ§λ€ O(n).
- μ€μ²©λ λ°λ³΅λ¬Έ O(n^2), O(n^3)μ κ°μ λ λμ μ°¨μμ μκ° λ³΅μ‘λλ₯Ό κ°μ§λλ€.
2οΈβ£ 쑰건문.
-
if-else 쑰건문μ μ
λ ₯ ν¬κΈ°μ μν₯μ λ―ΈμΉμ§ μλ κ²½μ° O(1)
3οΈβ£ μ¬κ· νΈμΆ.
- μ¬κ· ν¨μμ μκ° λ³΅μ‘λλ μ¬κ· νΈμΆμ κΉμ΄μ κ° νΈμΆμ μμ
μ λ°λΌ λ¬λΌμ§λλ€.
-
νΌλ³΄λμΉ μ¬κ· ν¨μλ O(2^n) μκ° λ³΅μ‘λλ₯Ό κ°μ§λλ€.
4οΈβ£ μ°μ°.
- μΌλ°μ μΈ μ°μ μ°μ°, λΉκ΅, ν λΉ λ±μ O(1)
6οΈβ£ μκ° λ³΅μ‘λ μμΈ‘μ μ€μμ±.
- μκ° λ³΅μ‘λλ₯Ό μ μ΄ν΄νλ©΄, μκ³ λ¦¬μ¦μ μ€κ³ν λ ν¨μ¨μ±μ μμΈ‘ν μ μμ΅λλ€.
- μ½λ©ν
μ€νΈλ μ€μ κ°λ°μμλ μ±λ₯ μ΅μ νκ° μ€μνλ°, μκ° λ³΅μ‘λ(Time Complexity)λ₯Ό ν΅ν΄ μ
λ ₯ ν¬κΈ°μ λ°λΌ μκ³ λ¦¬μ¦μ΄ μ΄λ»κ² λμν μ§ λ―Έλ¦¬ μμν μ μμ΅λλ€.
7οΈβ£ μμ½.
-
μκ° λ³΅μ‘λ(Time Complexity)λ μκ³ λ¦¬μ¦μ΄ μ
λ ₯ ν¬κΈ°μ λ°λΌ μΌλ§λ λΉ λ₯΄κ² μ€ν μκ°μ΄ μ¦κ°νλμ§λ₯Ό νκ°νλ μ§νλ‘, μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ λΉκ΅νκ³ μ±λ₯μ μ΅μ ννλ λ° μ€μν μν μ ν©λλ€.
- λΉ
-μ€ νκΈ°λ²(Big-O Notation)μ μκ° λ³΅μ‘λ(Time Complexity)λ₯Ό νννλ λ°©μμΌλ‘, μκ³ λ¦¬μ¦μ μ±λ₯μ μΆμμ μ΄κ³ κ°κ²°νκ² λνλ΄μ€, μ
λ ₯ ν¬κΈ° λ³νμ λ°λ₯Έ μκ³ λ¦¬μ¦μ λμμ μμΈ‘ν μ μκ² λμμ€λλ€.
- ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ μ€κ³νκΈ° μν΄μλ μκ° λ³΅μ‘λμ λν κΉμ μ΄ν΄κ° νμμ μ
λλ€.