본문 바로가기

Algorithm/String

(Javascript) - 프로그래머스(2019 KAKAO BLIND) : 오픈채팅방 답

반응형

programmers.co.kr/learn/courses/30/lessons/42888

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

map을 이용해 풀면 되는 문제였습니다.

풀이방법

 map을 이용해 key값은 id, value는 nickName으로 생각해 무조건 닉네임이 존재하는 경우에 map을 update 해주는 생각을 했습니다.

 1. record를 돌며 해당 정보를 map의 set함수를 이용해 저장합니다.

 2. 마지막까지 change된 nickname까지 모두 반영이 되기 때문에 갱신이 완료된 map을 가지고 다시 record를 돌며 나갔는지 들어왔는지 key값 id를 이용해 확인하면 됩니다.

 

Code

function solution(record) {
  var answer = [];
  const map = new Map();
  for (let i = 0; i < record.length; i++) {
    record[i] = record[i].split(" ");
    const id = record[i][1];
    const nickName = record[i][2];
    if (nickName) map.set(id, nickName);
  }

  for (let i = 0; i < record.length; i++) {
    const stat = record[i][0];
    const id = record[i][1];

    if (stat === "Enter") {
      answer.push(map.get(id) + "님이 들어왔습니다.");
    } else if (stat === "Leave") {
      answer.push(map.get(id) + "님이 나갔습니다.");
    }
  }
  return answer;
}