ν΄μ(Hash)
μμμ ν¬κΈ°λ₯Ό κ°μ§ λ°μ΄ν°λ₯Ό κ³ μ λ λ°μ΄ν°μ ν¬κΈ°λ‘ λ³νμν€λ κ²
νΉμ ν λ°°μ΄μ μΈλ±μ€λ μμΉλ₯Ό μ λ ₯νκ³ μνλ λ°μ΄ν°μ κ°μ μ΄μν΄ μ μ₯νκ±°λ μ°Ύμ μ μλ€.
ν΄μ¬λ₯Ό μ΄μ©νλ©΄ μ¦μ μ μ₯νκ±°λ μ°Ύκ³ μνλ μμΉλ₯Ό μ°Έμ‘°ν μ μμΌλ―λ‘ λΉ λ₯Έ μλλ‘ μ²λ¦¬ν μ μλ€.
μ μ₯λ λ°μ΄ν°μ λ°λ‘ μ κ·Όν΄μ κ°μ κ°μ Έμ¬ μ μλ€. μ°Ύκ³ μνλ κ°κ³Ό ν
μ΄λΈμ μΈλ±μ€κ° λμΌνλ―λ‘ κ°μ΄ μ μ₯λ 곡κ°μ λ°λ‘ μ κ·Όν΄μ κ°μ κ°μ Έμ¬ μ μμΌλ―λ‘ μκ°λ³΅μ‘λλ O(1)
μ΄λ€.
ν μ΄λΈμ μλ κ°μ μ½μ , μμ , μμ νλ νμλ κ°μ΄ μ΄λμλμ§λ§ μκ³ μμΌλ©΄ λͺ¨λ ν λ°©μ ν΄κ²°ν μ μλ€.
ν΄μν μ΄λΈ
ν΄μν¨μλΌλ κ²μ ν λ² ν΅κ³ΌμμΌμ μ¬μ©νλ€.
ν΄μ ν¨μλ μμμ κΈΈμ΄λ₯Ό κ°μ§λ μμμ λ°μ΄ν°λ₯Ό κ³ μ λ κΈΈμ΄μ λ°μ΄ν°λ‘ 맀ννλ ν¨μμ΄λ€.
μ΄λ€ κ°μ΄ λ€μ΄μ€λ κ°μ λ€ λκ°μ λ΄κ° μνλ κΈΈμ΄μ κ°μΌλ‘ λ§λ λ€.
keyμ valueλ‘ μ΄λ£¨μ΄μ§ Mapμ΄λΌλ κ°μ²΄λ₯Ό μ¬μ©ν΄μ ν΄μν μ΄λΈμ λ§λ€μ΄μ μ¬μ©νλ€.
μλ°μ€ν¬λ¦½νΈμ Mapμ μκ°λ³΅μ‘λλ₯Ό μ€μ΄λλ° κ²°μ μ μΈ μν μ νλ€.
Map κ°μ²΄ μ¬μ©νκΈ°
Map κ°μ²΄ μμ±
const map = new Map();
Mapμ λ©μλμΈ setν¨μ μ¬μ©ν΄μ κ°μ²΄μ μμ μΆκ°
map.set('B', 1)
κΈ°μ‘΄ κ°μλ€κ° μ¦κ°μν€κΈ°
map.get('B', 1)
μμ λ¬Έμ | νκΈνμ₯
λ¬Έμ
νκΈνμ₯μ λ½λλ° νλ³΄λ‘ κΈ°νΈ A,B,C,D,E νλ³΄κ° λ±λ‘μ νλ€. ν¬ν μ©μ§μλ λ° νμλ€μ΄ μ΄ ν보μ κΈ°νΈκ° μ°μ¬μμΌλ©°, μ μλμ κ·Έ κΈ°νΈλ₯Ό λ°ννκ³ μλ€. λ°νκ° λλ ν μ΄λ€ κΈ°νΈμ νλ³΄κ° νκΈ νμ₯μ΄ λμλμ§ μΆλ ₯ν΄λΌ.
μ λ ₯μμ | BACBACCACCBDEDE
μΆλ ₯μμ | C
μ½λ
const solution = (str) => {
let answer;
let student = new Map();
for (let x of str) {
if (student.has(x)) {
student.set(x, student.get(x) + 1);
} else {
student.set(x, 1);
}
}
// κ°μ₯ μμ μ μλ₯Ό λΉκ΅κ΅°μΌλ‘ μ€μ
let max = Number.MIN_SAFE_INTEGER;
for (let [key, value] of student) {
if (value > max) {
max = value;
answer = key;
}
}
return answer;
}
const str = "BACBACCACCBDEDE";
console.log(solution(str));
μμ λ¬Έμ | μλκ·Έλ¨
λ¬Έμ
μλκ·Έλ¨μ΄λ λ λ¬Έμμ΄μ΄ μνλ²³μ λμ΄ μμλ λ€λ₯΄μ§λ§ κ·Έ ꡬμ±μ΄ μΌμΉνλ©΄ λ λ¨μ΄λ μλκ·Έλ¨μ΄λΌκ³ νλ€. μ£Όμ΄μ§λ λ λ¨μ΄κ° μλκ·Έλ¨μ΄λ©΄ YESλ₯Ό μΆλ ₯νκ³ , μλλ©΄ NOλ₯Ό μΆλ ₯ν΄λΌ.
μ λ ₯μμ | AbaAeCe, baeeACA
μΆλ ₯μμ | YES
μ½λ
const solution = (word1, word2) => {
// μλκ·Έλ¨ : μνλ²³ λμ΄ μμλ λ€λ₯΄μ§λ§ κ·Έ ꡬμ±(μνλ²³κ³Ό κ·Έ κ°μ)μ΄ μΌμΉ
// κΈΈμ΄κ° λ€λ₯Έ λ κ°μ λ¨μ΄κ° μ£Όμ΄μ§λ©΄, κ·Έ λ λ¨μ΄κ° μλκ·Έλ¨μΈμ§ νλ³
// λμλ¬Έμ ꡬλ³
let answer = "Yes";
// map1 μ κΈ°μ€ κ°μ²΄λ‘ λ§λ€μ΄ λκ³
// map1 κ³Ό word2λ₯Ό λΉκ΅ν΄μ keyκ° μ‘΄μ¬νλμ§ λ³΄κ³ , μμΌλ©΄ value λΉκ΅
let map1 = new Map();
for (let x of word1) {
if (map1.has(x)) {
map1.set(x, map1.get(x) + 1);
} else {
map1.set(x, 1);
}
}
for (let x of word2) {
if (!map1.has(x) || map1.get(x) === 0) {
return "No";
}
map1.set(x, map1.get(x) - 1);
}
return answer;
}
const word1 = "abaCC";
const word2 = "Caaab";
console.log(solution(word1, word2));
'π‘Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ£κ΅¬μ‘° | λ§ν¬λ리μ€νΈ(Linked List) with JS (0) | 2021.09.28 |
---|---|
μλ£κ΅¬μ‘° | μλ°μ€ν¬λ¦½νΈ μ€ν(stack) (0) | 2021.09.26 |