오픈채팅방에서는 가상 이름을 사용합니다.
사용자가 참가하면, 다음 메세지가 출력됩니다.
사용자가 나가면, 다음 메세지가 출력됩니다.
채팅방에서 닉네임을 변경하는 방법은 2가지입니다.
닉네임이 바뀌면, 이전에 출력되었던 메세지의 닉네임도 변경됩니다.
아래와 같은 방식으로 레코드가 주어질 때 출력할 메세지를 반환합니다.
[유저 아이디] 사용자가 [닉네임]으로 채팅방에 입장
"Enter [유저 아이디][닉네임]" (ex. "Enter uid1234 Muzi")
[유저 아이디] 사용자가 채팅방에서 퇴장
"Leave [유저 아이디]" (ex. "Leave uid1234")
[유저 아이디] 사용자가 닉네임을 [닉네임]으로 변경
"Change [유저 아이디][닉네임]" (ex. "Change uid1234 Muzi")
이름이 변경되면 메세지도 바뀐 닉네임으로 변경되기 때문에,
최종적으로 변경된 사용자의 닉네임을 Map
으로 저장하고,
메세지를 출력한다.
이름이 변경되는 경우는, Enter
혹은, Change
이다.
그 때, user
를 set한다.
메세지를 출력하는 경우는 Enter
혹은, Leave
이다.
사용자의 이름은 user
맵에서 가져온다.
function solution(record) {
const message = [];
const user = new Map();
record.forEach(r=>{
const [oper,id,name] = r.split(' ');
if(oper == 'Leave') return;
user.set(id,name);
});
for (const r of record) {
const [oper,id] = r.split(' ');
const name = user.get(id);
if(oper == 'Enter') {
message.push(`${name}님이 들어왔습니다.`);
}
else if(oper == 'Leave') {
message.push(`${name}님이 나갔습니다.`);
}
}
return message;
}