function solution(record) {
var answer = [];
var idNameList = [];
var idObj = function(id, name){
this.id = id;
this.name = name;
}
for(var value of record){
let words = value.split(" ");
let index = idNameList.findIndex((item => item.id === words[1]));
if(value.startsWith("Enter")){
idNameList[index].name = words[2];
answer.push(words[1] + "님이 들어왔습니다.");
} else{
var selfObj = new idObj(words[1], words[2]);
idNameList.push(selfObj);
answer.push(words[1] + "님이 들어왔습니다.");
}
} else if(value.startsWith("Leave")){
answer.push(words[1] + "님이 나갔습니다.")
} else if(value.startsWith("Change")){
idNameList[index].name = words[2];
}
}
var realAnswer = [];
for (var value of answer){
var answerWords = value.split("님이");
let index = idNameList.findIndex((item => item.id === answerWords[0]));
realAnswer.push(idNameList[index].name + "님이 " + answerWords[1]);
}
return realAnswer;
}
function solution(record) {
var answer = [];
var idNameMap = new Map();
for(var value of record){
let words = value.split(" ");
if(value.startsWith("Enter")){
if(idNameMap.has(words[1])){
idNameMap.set(words[1], words[2]);
answer.push(words[1] + "님이 들어왔습니다.");
} else{
idNameMap.set(words[1], words[2]);
answer.push(words[1] + "님이 들어왔습니다.");
}
} else if(value.startsWith("Leave")){
answer.push(words[1] + "님이 나갔습니다.")
} else if(value.startsWith("Change")){
idNameMap.set(words[1], words[2]);
}
}
var realAnswer = [];
for (var value of answer){
var answerWords = value.split("님이");
realAnswer.push(idNameMap.get(answerWords[0]) + "님이" + answerWords[1]);
}
return realAnswer;
}
찾아보니 무조건 Map이 성능이 좋다라고 할 수는 없고 경우에 따라 Object와 Map 둘 중 하나를 사용하면 되는 것 같다.
아래 블로그에서 보기 좋게 정리해주었다.
https://kellis.tistory.com/129