πμ€λ λ°°μ΄ κ²
κ²μ μκ³ λ¦¬μ¦
μ ν κ²μ
λ°μ΄ν°λ₯Ό λ΄μ λ°°μ΄μ΄ μκ³ μ¬μ©μκ° ν΄λΉ λ°°μ΄μ ν΄λΉνλ κ°μ μ λ ₯νλμ§ νμΈν λ 맨 μλΆν° μμλλ‘ λ§λ λ°μ΄ν°μΈμ§ νμΈνλ κ²μ΄ μ νκ²μμ΄λ€.
β첫 λΆλΆμμ μμν΄μ λλΆλΆμΌλ‘ μ΄λνλ©΄μ ν λ²μ νλμ© νλͺ©μ νμΈνλ κ²(νΉμ μμμΌλ‘)
μ ν κ²μμ μ¬μ©νλ μλ°μ€ν¬λ¦½νΈ λ΄μ₯ν¨μ
- indexOf
- includes
- find
- findIndex
μ νκ²μμ λ°°μ΄μ κΈΈμ΄κ° κΈΈμ΄μ§ μλ‘ λ λ§μ κ²μμ μ€μν΄μΌλκΈ° λλ¬Έμ μ΅μ μ κ²½μ° O(n) μ μκ°λ³΅μ‘λλ₯Ό κ°μ§κ² λλ€.
β bestλ O(1), νκ· μ O(n), μ΅μ μ O(n)μ΄λ€.
βμ ν κ²μμ λ°μ΄ν°κ° μ λ ¬λμ΄ μμ§ μμ λ μ μ ν λ°©λ²μ΄λ€.
μ΄μ§κ²μ
λ°μ΄ν°κ° μ λ ¬λμ΄ μλ μνμμ μ λ°μ© λ²λ¦¬λ©΄μ νμΈνλ λ°©λ²
β μ€κ°μ μ κΈ°μ€μΌλ‘ μ€κ°μ μ μμ μμΉνλμ§, λ€μ μ‘΄μ¬νλμ§ νμΈνλ κ³Όμ μ λ°λ³΅
μ΄μ§κ²μμ μκ°λ³΅μ‘λ
μ΅μ μ κ²½μ°, νκ· : O(log n)
λ² μ€νΈ: O(1)
βμ΄μ§ κ²μμ λ°μ΄ν°κ° μ λ ¬λμ΄ μμ λ μ μ ν λ°©λ²μ΄λ€.
λμ΄λΈ λ¬Έμμ΄
κΈ΄λ¬Έμμ΄μμ 짦μ λ¬Έμμ΄μ μ°Ύμ λ νλμ© λμ‘°ν΄λ³΄λ©΄μ μ°Ύλ λ°©λ²
function naiveSearch(long, short) {
let count = 0;
for(let i = 0; i<long.length; i++) {
for(let j = 0; j<short.length; j++){
if(short[j] !== long[i+j]) break;
if(j === short.length - 1) count++;
}
}
return count;
}
naiveSearch("lorie loled", "lo")
μ λ ¬ μκ³ λ¦¬μ¦μ΄λ?
: 컬λ μ μ νλͺ©μ μ¬λ² μ΄νλ κ³Όμ
μ λ°°μμΌ νλκ°?
- νλ‘κ·Έλλ°μμ ννκ² μ¬μ©νκΈ° λλ¬Έμ΄λ€.
- μλ°μ€ν¬λ¦½νΈμμ λ΄μ₯λ μ λ ¬ λ©μλ λ±μ μ΄ν΄ν νμκ° μλ€.
- κ±°μ μ λ ¬λ λ°μ΄ν° λͺ©λ‘μμ μ λ ¬λμ§ μμ λ°μ΄ν°λ₯Ό μ λ ¬νκ³ μ ν λ μ΄λ€ μ λ ¬ μκ³ λ¦¬μ¦μ μ¬μ©νλλμ λ°λΌ μλμ°¨μ΄κ° λκΈ° λλ¬Έμ΄λ€.
λ²λΈ μ λ ¬
λ°°μ΄μ μ€λ¦μ°¨μμΌλ‘ μ λ ¬ νλ€λ©΄ λ ν° μ«μκ° νλμ© λ€λ‘ μ΄λνλ κ².
λ²λΈ μ λ ¬μ μ΅μ νλ₯Ό μν΄μ μ°λ¦¬κ° νμΈν΄μΌ ν κ²μ
루νκ° λ§μ§λ§μΌλ‘ μ€νλμ λ κ΅νμ νλκ°?
μ΄λ€. λ§μ½ κ΅νμ νμ§ μμλ€λ©΄ μ΄λ―Έ μ λ ¬μ΄ μ’ λ£λ μνμ΄κΈ° λλ¬Έμ μ’ λ£νλ©΄ λλ€.
function bubbleSort(arr) {
let noSwaps;
for(let i = arr.length; i> 0; i--) {
noSwaps = true;
for(let j = 0; j< i-1; j++){
if (arr[j] > arr[j+1]) {
let temp = arr[i];
arr[i] = arr[j+1];
arr[j+1] = temp;
noSwaps = false;
}
}
if(noSwaps) break;
}
return arr;
}
μκ° λ³΅μ‘λ
μΌλ°μ μΌλ‘ O(n2)μ΄λ€. νμ§λ§ λ°μ΄ν°κ° κ±°μ μ λ ¬λμκ±°λ μ΄λ―Έ μ λ ¬μ΄ λλ μνμμ noSwaps λ³μλ₯Ό μ¬μ©νλ κ²½μ° μ ν μκ°O(n)μ λ κ°κΉλ€.
πλ°°μ΄ μ
μ΄λ ΄νμ΄ μκ³ μλ κ²μ μκ³ λ¦¬μ¦κ³Ό λ²λΈ μ λ ¬μ λν μ΄λ‘ μ λ€μ μ΅λν μ μμλ€. μκ³ λ¦¬μ¦ λ°°μμΌνλ 건 μκ² λλ° μ λͺ¨λ₯΄κ² μ΄! λΌλ μκ°μ κ°μ§κ³ μμλλ° κ°μλ₯Ό ν΅ν΄μ μκ°νλ μκ³ λ¦¬μ¦ μλ λΉκ΅, μ λ ¬ κ³Όμ μλ£λ₯Ό 보λκΉ μκ³ λ¦¬μ¦μ λ°λΌ λ°©λ²λ μ²μ°¨λ§λ³μ΄κ³ μλκ³ νμ€ν λ€λ₯΄λ€ λΌλ κ²μ λ€μ κΉ¨λ¬μλ€. κ·Έλ¦¬κ³ μ κΈ°νλ κ²μ μ λ ¬ μκ³ λ¦¬μ¦μμ μμ μ λ ¬λμ§ μμ λ°μ΄ν°μμ μ¬μ©ν λ λλ Έλ μκ³ λ¦¬μ¦μ΄ λλΆλΆ μ λ ¬λ λ°μ΄ν°μμ μ¬μ©νλ©΄ μ€νλ € μ μΌ λΉ λ₯Ό μ μλ€λ μ μ΄μλ€.
μκ³ λ¦¬μ¦μ μ΄λ‘ μ μκ³ μ¬μ©ν μ μλ κ²λΏλ§ μλλΌ μ΄λ μν©μμ μ¬μ©ν΄μΌνλμ§λ μ μμμΌκ² λ€κ³ μκ°νλ€.
μ΄μ μ§μ§ μκ³ λ¦¬μ¦ λ΄μ© μμμΈλ°... μμΌλ‘μ λͺ©νλ κ·Έλ₯ κ°μλ§ λ λ€ λ£λ κ² μλλΌ λ§μ΄ μ°μ΅ν΄λ³΄κ³ λ€λ₯Έ μ½ν λ¬Έμ λ κ°μ΄ νμ΄λ³΄λ©΄μ μ μ©ν΄λ³΄κ³ νλ©΄μ μ€λ ₯μ μμκ°κ³ μΆλ€!! μ‘°κΈν΄νμ§ λ§μ!!
'μΌμ > Today I Learned' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
2023.04.12[λΉμ μ΄ μ»΄ν¬λνΈ, νλ‘μ νΈ λ¦¬ν©ν λ§] (0) | 2023.04.12 |
---|---|
2023.04.03[μ ν΄λ¦¬λ νΈμ λ², ν΅ μ λ ¬] (0) | 2023.04.04 |
2023.02.08 (0) | 2023.02.08 |
2023.02.07 (0) | 2023.02.07 |
2023.02.06 (0) | 2023.02.07 |
πμ€λ λ°°μ΄ κ²
κ²μ μκ³ λ¦¬μ¦
μ ν κ²μ
λ°μ΄ν°λ₯Ό λ΄μ λ°°μ΄μ΄ μκ³ μ¬μ©μκ° ν΄λΉ λ°°μ΄μ ν΄λΉνλ κ°μ μ λ ₯νλμ§ νμΈν λ 맨 μλΆν° μμλλ‘ λ§λ λ°μ΄ν°μΈμ§ νμΈνλ κ²μ΄ μ νκ²μμ΄λ€.
β첫 λΆλΆμμ μμν΄μ λλΆλΆμΌλ‘ μ΄λνλ©΄μ ν λ²μ νλμ© νλͺ©μ νμΈνλ κ²(νΉμ μμμΌλ‘)
μ ν κ²μμ μ¬μ©νλ μλ°μ€ν¬λ¦½νΈ λ΄μ₯ν¨μ
- indexOf
- includes
- find
- findIndex
μ νκ²μμ λ°°μ΄μ κΈΈμ΄κ° κΈΈμ΄μ§ μλ‘ λ λ§μ κ²μμ μ€μν΄μΌλκΈ° λλ¬Έμ μ΅μ μ κ²½μ° O(n) μ μκ°λ³΅μ‘λλ₯Ό κ°μ§κ² λλ€.
β bestλ O(1), νκ· μ O(n), μ΅μ μ O(n)μ΄λ€.
βμ ν κ²μμ λ°μ΄ν°κ° μ λ ¬λμ΄ μμ§ μμ λ μ μ ν λ°©λ²μ΄λ€.
μ΄μ§κ²μ
λ°μ΄ν°κ° μ λ ¬λμ΄ μλ μνμμ μ λ°μ© λ²λ¦¬λ©΄μ νμΈνλ λ°©λ²
β μ€κ°μ μ κΈ°μ€μΌλ‘ μ€κ°μ μ μμ μμΉνλμ§, λ€μ μ‘΄μ¬νλμ§ νμΈνλ κ³Όμ μ λ°λ³΅
μ΄μ§κ²μμ μκ°λ³΅μ‘λ
μ΅μ μ κ²½μ°, νκ· : O(log n)
λ² μ€νΈ: O(1)
βμ΄μ§ κ²μμ λ°μ΄ν°κ° μ λ ¬λμ΄ μμ λ μ μ ν λ°©λ²μ΄λ€.
λμ΄λΈ λ¬Έμμ΄
κΈ΄λ¬Έμμ΄μμ 짦μ λ¬Έμμ΄μ μ°Ύμ λ νλμ© λμ‘°ν΄λ³΄λ©΄μ μ°Ύλ λ°©λ²
function naiveSearch(long, short) {
let count = 0;
for(let i = 0; i<long.length; i++) {
for(let j = 0; j<short.length; j++){
if(short[j] !== long[i+j]) break;
if(j === short.length - 1) count++;
}
}
return count;
}
naiveSearch("lorie loled", "lo")
μ λ ¬ μκ³ λ¦¬μ¦μ΄λ?
: 컬λ μ μ νλͺ©μ μ¬λ² μ΄νλ κ³Όμ
μ λ°°μμΌ νλκ°?
- νλ‘κ·Έλλ°μμ ννκ² μ¬μ©νκΈ° λλ¬Έμ΄λ€.
- μλ°μ€ν¬λ¦½νΈμμ λ΄μ₯λ μ λ ¬ λ©μλ λ±μ μ΄ν΄ν νμκ° μλ€.
- κ±°μ μ λ ¬λ λ°μ΄ν° λͺ©λ‘μμ μ λ ¬λμ§ μμ λ°μ΄ν°λ₯Ό μ λ ¬νκ³ μ ν λ μ΄λ€ μ λ ¬ μκ³ λ¦¬μ¦μ μ¬μ©νλλμ λ°λΌ μλμ°¨μ΄κ° λκΈ° λλ¬Έμ΄λ€.
λ²λΈ μ λ ¬
λ°°μ΄μ μ€λ¦μ°¨μμΌλ‘ μ λ ¬ νλ€λ©΄ λ ν° μ«μκ° νλμ© λ€λ‘ μ΄λνλ κ².
λ²λΈ μ λ ¬μ μ΅μ νλ₯Ό μν΄μ μ°λ¦¬κ° νμΈν΄μΌ ν κ²μ
루νκ° λ§μ§λ§μΌλ‘ μ€νλμ λ κ΅νμ νλκ°?
μ΄λ€. λ§μ½ κ΅νμ νμ§ μμλ€λ©΄ μ΄λ―Έ μ λ ¬μ΄ μ’ λ£λ μνμ΄κΈ° λλ¬Έμ μ’ λ£νλ©΄ λλ€.
function bubbleSort(arr) {
let noSwaps;
for(let i = arr.length; i> 0; i--) {
noSwaps = true;
for(let j = 0; j< i-1; j++){
if (arr[j] > arr[j+1]) {
let temp = arr[i];
arr[i] = arr[j+1];
arr[j+1] = temp;
noSwaps = false;
}
}
if(noSwaps) break;
}
return arr;
}
μκ° λ³΅μ‘λ
μΌλ°μ μΌλ‘ O(n2)μ΄λ€. νμ§λ§ λ°μ΄ν°κ° κ±°μ μ λ ¬λμκ±°λ μ΄λ―Έ μ λ ¬μ΄ λλ μνμμ noSwaps λ³μλ₯Ό μ¬μ©νλ κ²½μ° μ ν μκ°O(n)μ λ κ°κΉλ€.
πλ°°μ΄ μ
μ΄λ ΄νμ΄ μκ³ μλ κ²μ μκ³ λ¦¬μ¦κ³Ό λ²λΈ μ λ ¬μ λν μ΄λ‘ μ λ€μ μ΅λν μ μμλ€. μκ³ λ¦¬μ¦ λ°°μμΌνλ 건 μκ² λλ° μ λͺ¨λ₯΄κ² μ΄! λΌλ μκ°μ κ°μ§κ³ μμλλ° κ°μλ₯Ό ν΅ν΄μ μκ°νλ μκ³ λ¦¬μ¦ μλ λΉκ΅, μ λ ¬ κ³Όμ μλ£λ₯Ό 보λκΉ μκ³ λ¦¬μ¦μ λ°λΌ λ°©λ²λ μ²μ°¨λ§λ³μ΄κ³ μλκ³ νμ€ν λ€λ₯΄λ€ λΌλ κ²μ λ€μ κΉ¨λ¬μλ€. κ·Έλ¦¬κ³ μ κΈ°νλ κ²μ μ λ ¬ μκ³ λ¦¬μ¦μμ μμ μ λ ¬λμ§ μμ λ°μ΄ν°μμ μ¬μ©ν λ λλ Έλ μκ³ λ¦¬μ¦μ΄ λλΆλΆ μ λ ¬λ λ°μ΄ν°μμ μ¬μ©νλ©΄ μ€νλ € μ μΌ λΉ λ₯Ό μ μλ€λ μ μ΄μλ€.
μκ³ λ¦¬μ¦μ μ΄λ‘ μ μκ³ μ¬μ©ν μ μλ κ²λΏλ§ μλλΌ μ΄λ μν©μμ μ¬μ©ν΄μΌνλμ§λ μ μμμΌκ² λ€κ³ μκ°νλ€.
μ΄μ μ§μ§ μκ³ λ¦¬μ¦ λ΄μ© μμμΈλ°... μμΌλ‘μ λͺ©νλ κ·Έλ₯ κ°μλ§ λ λ€ λ£λ κ² μλλΌ λ§μ΄ μ°μ΅ν΄λ³΄κ³ λ€λ₯Έ μ½ν λ¬Έμ λ κ°μ΄ νμ΄λ³΄λ©΄μ μ μ©ν΄λ³΄κ³ νλ©΄μ μ€λ ₯μ μμκ°κ³ μΆλ€!! μ‘°κΈν΄νμ§ λ§μ!!
'μΌμ > Today I Learned' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
2023.04.12[λΉμ μ΄ μ»΄ν¬λνΈ, νλ‘μ νΈ λ¦¬ν©ν λ§] (0) | 2023.04.12 |
---|---|
2023.04.03[μ ν΄λ¦¬λ νΈμ λ², ν΅ μ λ ¬] (0) | 2023.04.04 |
2023.02.08 (0) | 2023.02.08 |
2023.02.07 (0) | 2023.02.07 |
2023.02.06 (0) | 2023.02.07 |