function solution(record) {
let answer = [];
let nameObj = {};
let temp, dir, uid, name;
record.forEach((r)=>{
let temp = r.split(' ');
dir = temp[0];//Enter, Leave, Change
uid = temp[1];//아이디
name = temp[2];//닉네임
if(dir!=='Change') answer.push([uid,dir])//아이디와 방향 저장
if(dir!=='Leave') nameObj[uid] = name;//아이디와 닉네임 저장
})
answer = answer.map((item)=>{
return `${nameObj[item[0]]}님이 ${item[1]==='Enter'?'들어왔습니다.':'나갔습니다.'}`;
})
return answer;
}
입력을 순차적으로 읽으면서 아이디와 방향, 그리고 아이디와 닉네임을 따로 저장했다. 결과값에 아이디 변경은 출력하지 않으므로 아이디와 방향을 저장할 때는 Change를 제외시켜야 한다. 또한 닉네임 변경은 Leave일 때 발생하지 않으므로 아이디와 닉네임 저장에서 제외시켰다. 마지막에 저장해 놓은 아이디와 방향, 아이디와 닉네임을 적절히 조합해서 answer를 만들었다.