입력: record
record는 아래와같이 생겼다.
[
"Enter uid1234 Muzi",
"Enter uid4567 Prodo",
"Leave uid1234",
"Enter uid1234 Prodo",
"Change uid4567 Ryan",
]
첫번째 값은Enter
,Leave
,Change
값중 하나가 입력된다.
두번쨰 값은 유저의 고유 식별번호가 입력된다.
세번째 값은 닉네임이 입력되거나 입력되지 않을 수 있다.
출력:
위와같이 입력하면
[
"Prodo님이 들어왔습니다.",
"Ryan님이 들어왔습니다.",
"Prodo님이 나갔습니다.",
"Prodo님이 들어왔습니다."
]
라고 출력된다.
이게 무슨의미냐면 유저를 닉네임이 아닌 고유식별번호로 구분을 해서
유저가 닉네임을 바꿔도 이전에 남았던 기록의 닉네임도 전부 바꾼다는 소리다.위의 예를 본다면
1. uid 1234 가 Muzi 닉네임으로 입장
2. uid 4567 이 Prodo 닉네임으로 입장
3. uid 1234 가 떠남
4. uid 1234 가 Prodo 닉네임으로 변경해서 입장
5. uid 4567 이 Ryan 닉네임으로 변경그래서 위와같은 출력이 나온다
function solution(record) {
const dbId = {};
const inOutRecord = [];
const notice = [
"님이 들어왔습니다.",
"님이 나갔습니다."
]
record.forEach( rcd => {
const [state, uid, nickname] = rcd.split(" ");
if (nickname) {
dbId[uid] = nickname;
}
if (state === "Enter" || state === "Leave") {
inOutRecord.push([uid, state]);
}
});
console.log(inOutRecord);
return inOutRecord.map( (rcd) =>
`${dbId[rcd[0]]}${rcd[1] === "Enter" ? notice[0] : notice[1]}`
);
}