λ¬Έμ
μ΄ λ¬Έμ μ ν΅μ¬μ μ¬μ©μκ° λλ€μμ λ³κ²½ν λ ν΄λΉ λ³κ²½μ¬νμ μ 체 λν κΈ°λ‘μ μκΈ μ μ©νμ¬, λͺ¨λ μ μ₯ λ° ν΄μ₯ λ©μμ§μμ κ°μ₯ μ΅κ·Όμ λλ€μμ΄ μΌκ΄λκ² νμλλλ‘ νλ κ²μ λλ€.
μ¬μ©μ λλ€μ λ³κ²½ μ κ°μ₯ μ§κ΄μ μΈ λ°©λ²μ λͺ¨λ μ΄μ λ©μμ§λ₯Ό μννλ©° λλ€μμ μμ νλ κ²μ΄μ§λ§, μ΄λ λ©μμ§λ§λ€ μ 체 κΈ°λ‘μ λ€μ κ²ν ν΄μΌ ν΄μ μκ°λ³΅μ‘λκ° O(N²)μ΄ λμ΄ λΉν¨μ¨μ μ λλ€.
λμ νμ΄
λ¬Έμ λ₯Ό μμΈν λΆμν΄λ³΄λ©΄, μꡬμ¬νμ μ΅μ’ λ©μμ§ μΆλ ₯μ μ§μ€λμ΄ μκ³ , κ° μ¬μ©μλ§λ€ κ³ μ ν IDκ° μ‘΄μ¬ν©λλ€. μ΄ νΉμ±μ νμ©νμ¬ ν΄μ ꡬ쑰λ₯Ό μ¬μ©νλ©΄ ν¨μ¨μ μΌλ‘ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
- μκ°λ³΅μ‘λ: O(N)
function solution(record) {
const userNicknames = new Map();
const MESSAGE_TEMPLATES = {
Enter: "λμ΄ λ€μ΄μμ΅λλ€.",
Leave: "λμ΄ λκ°μ΅λλ€."
};
// μ¬μ©μ μ 보 μ
λ°μ΄νΈ
const parsedRecord = record.map(log => {
const [action, userId, nickname] = log.split(' ');
if (nickname) userNicknames.set(userId, nickname);
return [action, userId];
});
// μ΅μ’
λ©μμ§ μμ±
return parsedRecord
.filter(([action]) => action !== "Change")
.map(([action, userId]) => {
const userNickname = userNicknames.get(userId);
const actionMessage = MESSAGE_TEMPLATES[action];
return `${userNickname}${actionMessage}`;
});
}
λ€λ₯Έ νμ΄
- μκ°λ³΅μ‘λ: O(N)
function solution(record) {
answer = [];
uid = {};
for (line in record) { // β recordμ κ° μ€μ νλμ© μ²λ¦¬
cmd = record[line].split(" ");
if (cmd[0] != "Leave") { // β Enter λλ ChangeμΈ κ²½μ°
uid[cmd[1]] = cmd[2];
}
}
for (line in record) { // β recordμ κ° μ€μ νλμ© μ²λ¦¬
cmd = record[line].split(" ");
// β κ° μνμ λ§λ λ©μμ§λ₯Ό answerμ μ μ₯
if (cmd[0] == "Enter") {
answer.push(uid[cmd[1]] + "λμ΄ λ€μ΄μμ΅λλ€.");
} else if (cmd[0] == "Leave") {
answer.push(uid[cmd[1]] + "λμ΄ λκ°μ΅λλ€.");
}
}
return answer;
}
'π’ Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Javascript][Programmers] μ κ³ κ²°κ³Ό λ°κΈ° (2) | 2024.10.02 |
---|---|
[Javascript][Programmers] λ² μ€νΈ μ¨λ² (1) | 2024.10.01 |
[Javascript][Programmers] ν μΈ νμ¬ (4) | 2024.09.27 |
[Algorithm] μ¬λΌμ΄λ© μλμ°(Sliding Window) (1) | 2024.09.27 |
[Javascript][Programmers] μμ£Όνμ§ λͺ»ν μ μ (0) | 2024.09.23 |