본문 바로가기
Algorithm/프로그래머스(Programmers)

[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 오픈채팅방

by YWTechIT 2021. 11. 8.
728x90

📍 프로그래머스 2단계 - 오픈채팅방

프로그래머스 2단계 - 오픈채팅방


⚡️ 나의 풀이

처음 문제를 풀기 전 문제 분류에 2019 KAKAO BLIND RECRUITMENT 라고 되어있어서 카카오 문제니까 어렵지 않을까?라고 했는데 어렵지 않았다. 문제의 내용은 길었지만 코드는 짧게 작성할 수 있는 문제였다. 결론적으로 반복문을 2번 사용했는데 처음 닉네임이 변경되는 모든 과정에 반복문을 한번 사용하고, 모든 기록이 처리된 마지막에 반복문을 한번 더 사용했다. 세부과정은 다음과 같다.

 

  1. idInfonew Map()으로 선언하여 hash값을 이용했다.
  2. statusEnter 혹은 Change일 때 idInfonickName을 변경한다.
  3. 모든 기록이 처리된 후 채팅방 메시지를 출력한다. statusEnter 혹은 Leave일 때 메시지를 출력하는데, 이때 2번과정을 진행한 userInfonickName을 출력한다.

 

728x90
function solution(records) {
    var answer = [];
    let idInfo = new Map();

    // Create or Change id if status Enter or Change
    for (let record of records){
        let [status, userId, nickName] = record.split(" ");
        if ((status === "Enter") || (status === "Change")) idInfo.set(userId, nickName);
    }

    // Finally Enter or Leave message after processed
    for (let record of records){
        let [status, userId] = record.split(" ");
        if (status === "Enter") answer.push(`${idInfo.get(userId)}님이 들어왔습니다.`);
        else if (status === "Leave") answer.push(`${idInfo.get(userId)}님이 나갔습니다.`);
    }

    return answer;
}
반응형

댓글