<Demopeu/>

[프로그래머스] 42888 오픈채팅방 JavaScript

[프로그래머스] 42888 오픈채팅방 JavaScript

problem-solving프로그래머스해시구현

📌 문제 설명

오픈채팅방 문제 보기

📌 문제 접근

단순하게 빠르게 아이디로 찾아서 갱신만 해주는 되는 문제. record가 100000이 최대기 때문에 array로 2번 돌면 시간 초과 날 것이라고 판단하였다. 그래서 Map으로 O(1)로 찾고 한바퀴 돌면 O(n)이기 때문에 충분하다고 판단했다.

📌 내가 작성한 코드

function solution(record) {
  const user_map = new Map();
  for (const r of record) {
    const [type, id, nickName] = r.split(" ");
    if (type === "Enter" || type === "Change") user_map.set(id, nickName);
  }
  return record.reduce((acc, cur) => {
    const [type, id, nickName] = cur.split(" ");
    if (type === "Enter") acc.push(`${user_map.get(id)}님이 들어왔습니다.`);
    else if (type === "Leave") acc.push(`${user_map.get(id)}님이 나갔습니다.`);
    return acc;
  }, []);
}

📌 시간 복잡도

  • 전체 레코드를 1번 순회하며 닉네임을 갱신하고, 다시 1번 순회하며 결과를 만들기 때문에 2* O(N)

📌 참고 링크