본문 바로가기
코딩테스트(알고리즘)/프로그래머스

[프로그래머스] 오픈채팅방 (Javascript)

by Cafe Mocha 2022. 6. 30.

코딩테스트 연습 - 오픈채팅방 | 프로그래머스 (programmers.co.kr)

 

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

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

programmers.co.kr


접근 : 구현

중간에 쓸모없는 반복문을 넣으면 시간 초과 발생.

효율성 있는 코드로 리팩토링 후 통과

 

Javascript

function solution(record) {
    var answer = [];
    let idLog=[];
    let cmdLog=[];
    let idList={};
    
    record.forEach((v,idx)=>{
        let [cmd,id,name] = v.split(" ");
        

        if(cmd === "Enter"){
            cmdLog.push(cmd);
            if(id in idList){
                idList[id]= name;
                idLog.push(id);
            } else{
                idList[id] = name;
                idLog.push(id);
            }
        } else if(cmd === "Leave"){
            cmdLog.push(cmd);
            idLog.push(id);
        } else {
            if(id in idList){
                idList[id]= name;
            } else {
                idList[id]= name;
            }
        }
    })
    
    for(let i=0;i<cmdLog.length;i++){
        if(cmdLog[i]==="Enter"){
            answer.push(`${idList[idLog[i]]}님이 들어왔습니다.`);
        } else{
            answer.push(`${idList[idLog[i]]}님이 나갔습니다.`);
        }
    }
    
    
    return answer;
}