🔗 문제 LINK
♟ 풀이 순서
- 배열record의 문자열을 공백기준으로 배열로 변경해 2차원 배열로 나타낸다 => mapRecords = map(), split(“ “)
- records를 forEach로 돌면서 마지막 id와 nickname 찾아서 객체로 나타내기
{
id: nickname,
uid1234 : Prodo,
…
}
- mapRecords forEach로 돌면서 answer에
${nickname} 님이 들어왔습니다.
추가
👾 코드
const solution = (records) => {
let answer = [];
let user = {};
const mapRecords = records.map((record) => record.split(" "));
mapRecords.forEach((record) => {
if (record[0] !== "Leave") user[record[1]] = record[2];
});
mapRecords.forEach((record) => {
if (record[0] === "Change") return;
const action =
record[0] === "Enter" ? "님이 들어왔습니다." : "님이 나갔습니다.";
answer.push(`${user[record[1]]}${action}`);
});
return answer;
};
👀 코드 비교
- forEach 내부에서 split을 해주는게 더 깔끔해보인다.
records.forEach((entry) => {
let [command, uid, nick] = entry.split(" ");
});
- 위 코드보다 이런 방식이 보기에 더 보기 좋은 것 같다.
if (command === "Enter") ret.push(`${uids.get(uid)}님이 들어왔습니다.`);
if (command === "Leave") ret.push(`${uids.get(uid)}님이 나갔습니다.`);
☕ 잡담
- 조금 더 생각 해봤으면 가독성 있게 쓸 수 있었을 텐데 아쉽다.
Leave a comment