🔗 문제 LINK

♟ 풀이 순서

  1. 배열record의 문자열을 공백기준으로 배열로 변경해 2차원 배열로 나타낸다 => mapRecords = map(), split(“ “)
  2. records를 forEach로 돌면서 마지막 id와 nickname 찾아서 객체로 나타내기 { id: nickname, uid1234 : Prodo, … }
  3. 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