Boyer-Moore κ³Όλ°μ ν¬ν μκ³ λ¦¬μ¦ (Boyer-Moore majority vote algorithm)
- μ£Όμ΄μ§ ν보μ λͺ©λ‘μμ κ³Όλ°μλ₯Ό μ°¨μ§νλ ν보λ₯Ό μ°Ύλ μκ³ λ¦¬μ¦μ΄λ€.
- λ°°μ΄ λ΄ κ³Όλ°μμ ν΄λΉνλ μμκ° νμ μ‘΄μ¬νλ€κ³ κ°μ νλ©΄, κ²°κ³Όκ°μ νμ κ³Όλ°μ μμκ° λλ€.
- ν΅μ¬ μμ΄λμ΄λ μ£Όμ΄μ§ ν보μ λͺ©λ‘μ λ κ°μ§μ μλ‘ λ€λ₯Έ ν보λ₯Ό μ§μ νκ³ , μ΄λ€μ μλ‘ μμμμΌκ°λ©° μ΅μ’ ν보λ₯Ό κ²°μ νλ κ²μ΄λ€.
- μκ° λ³΅μ‘λλ O(N), κ³΅κ° λ³΅μ‘λλ O(1) μ΄λ€.
λμ λ°©μ
- μ λ ₯ μνμ€ μμ mκ³Ό μΉ΄μ΄ν° cλ₯Ό 0μΌλ‘ μ΄κΈ°ννλ€.
- μ
λ ₯ μνμ€μμ κ°κ°μ μμ xμ λν΄μ
- c == 0 μ΄λ©΄ m = x, c = 1 λμ νλ€.
- m == x μ΄λ©΄ c = c + 1 λμ νλ€.
- m != x μ΄λ©΄ c = c -1 λμ νλ€.
- mμ λ°ννλ€.
λΉμ λ₯Ό ν΄λ³΄μλ©΄
- ν κ΅μ€μ νμλ€μ΄ λͺ¨μ¬ μλ€.
- μ μ¬ λ©λ΄λ₯Ό νλ²κ±°μ νΌμ μ€μμ κ³ λ₯Ό 건λ°, νμλ€μ΄ λ λ§μ΄ μ νν λ©λ΄λ‘ μ μ ν κ²μ΄λ€.
- λ λͺ μ© μ§μ μ§λλ€.
- λ μ¬λμ΄ μ νν λ©λ΄κ° κ°λ€λ©΄ κ΅μ€ μμ λ¨λλ€.
- λ μ¬λμ΄ μ νν λ©λ΄κ° λ€λ₯΄λ€λ©΄ μ μ‘κ³ κ΅μ€μ λκ°λ€.
- κ΅μ€μ λ¨μμλ νμμ΄ κ³ λ₯Έ λ©λ΄λ₯Ό μ΅μ’ μ ννλ€.
μμ€μ½λ (JS)
const majorityElement = function (arr) {
let candidate = 0;
let count = 0;
for (let i = 0; i < arr.length; i++) {
if (count == 0) {
candidate = arr[i];
count = 1;
} else if (candidate == arr[i]) {
count++;
} else {
count--;
}
}
return candidate;
};
μ°Έκ³
'CS > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μκ³ λ¦¬μ¦ λ³΅μ‘λ (0) | 2024.08.27 |
---|