글 작성자: bbangson
반응형

 

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

 

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

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

programmers.co.kr

 

오픈채팅방


 

난이도  : Level 2

 

 적절한 자료구조를 사용하고 배열을 조작할 수 있다면 쉽게 풀 수 있는 문제라고 생각합니다.

 

 제가 생각한 로직은 아래와 같습니다. 

1. 처음 배열(record)을 순회할 때, map에 (key ,value) 쌍으로 id와 닉네임을 저장할 것.

2. 두번 째로 배열(record)을 순회할 때, key값에 따라 value를 지정하고 operation에 따라 정답을 도출할 것. 

 

 

  코드
function solution(record) {
  let answer = [];
  const userMap = new Map();

  record.forEach((user) => {
    const [op, key, value] = user.split(' ');
    if (op === 'Enter' || op === 'Change') {
      userMap.set(key, value);
    }
  });

  record.forEach((user) => {
    const [op, key, value] = user.split(' ');
    if (op === 'Enter') answer.push(`${userMap.get(key)}님이 들어왔습니다.`);
    if (op === 'Leave') answer.push(`${userMap.get(key)}님이 나갔습니다.`);
  });

  return answer;
}

 

 

피드백 환영합니다.

반응형