function solution(record) {
let result = [];
record = record.map(e => e.split(' '));
let map = record.reduce((acc,e) => e[2] ? acc.set(e[1],e[2]) : acc ,new Map())
record.forEach(e => {
if(e[0] == 'Enter') result.push(`${map.get(e[1])}님이 들어왔습니다.`)
if(e[0] == 'Leave') result.push(`${map.get(e[1])}님이 나갔습니다.`)
})
return result
}
공백을 기준으로 split 메소드로 분리한다.
반복문으로 사용자 아이디(elem[1]) 닉네임(elem[2])을 맵에 저장한다. 맵의 키는 중복될 경우 최근 저장한 값으로 변경되기 때문에 userID에 대한 최신 닉네임이 value로 저장된다.
단 Leave의 경우 닉네임[elem[2]]이 없기 때문에 저장할 경우 undefined가 vlaue로 들어가기 때문에 저장하지 않고 넘어간다.
Enter의 경우와 Leave의 경우를 구분하여 map에서 꺼내 쓴다.