알고리즘

프로그래머스 > 2019 KAKAO BLIND RECRUITMENT > 오픈채팅방

kwonpinky 2023. 4. 4. 00:09
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42888

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[나의 코드]

function getNicknameMap(record) {
  const map = new Map();
  record.forEach((r) => {
    const [action, id, nickname] = r.split(' ');
    if (action === 'Enter' || action === 'Change') {
      map.set(id, nickname);
    }
  });
  return map;
}

function getAnswer(record, map) {
  const answer = [];
  record.forEach((r) => {
    const [action, id] = r.split(' ');
    if (action === 'Enter') {
      answer.push(`${map.get(id)}님이 들어왔습니다.`);
    } else if (action === 'Leave') {
      answer.push(`${map.get(id)}님이 나갔습니다.`);
    }
  });
  return answer;
}

function solution(record) {
  const map = getNicknameMap(record);
  const answer = getAnswer(record, map);
  return answer;
}

map을 이용해서 enter와 change이벤트일 경우에 id와 nickname을 매핑시켜준다. Enter과 Leave 이벤트에는 매팽된 맵에서 해당 닉네임을 가져와 알맞는 메시지를 배열에 푸쉬해서 최종 리턴한다.

728x90