본문 바로가기
Algorithm/프로그래머스[Programmers]

[JS] 2019카카오 : 오픈 채팅방 프로그래머스 LEVEL2

by jgo 2022. 6. 20.

문제 링크

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

풀이 전략

닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다
모든 유저는 [유저 아이디]로 구분한다.
[유저 아이디] 사용자가 [닉네임]으로 채팅방에 입장 - "Enter [유저 아이디] [닉네임]" (ex. "Enter uid1234 Muzi")

코드 

function solution(record) {
    var answer = [];
    const myHm = new Map();
    
    for(const str of record){
        const [oper, uid, nick] = str.split(' ');
        if(oper === 'Leave') continue;
        myHm.set(uid, nick);
    }
    
    for(const str of record){
        const [oper, uid, nick] = str.split(' ');
        if(oper === 'Change') continue;
        if(oper === 'Enter'){
            answer.push(`${myHm.get(uid)}님이 들어왔습니다.`);
        } else if(oper === 'Leave'){
            answer.push(`${myHm.get(uid)}님이 나갔습니다.`)
        }
    }
    return answer;
}

 

회고

iteration을 한번 사용해서 풀 수있을까 고민하였지만 가장 깔끔한 방법은 map에 uid를 최종적으로 저장한다음 다음 iteration을 돌면서 출력을하는 방법이었다. 

 

더 좋은 방법이나 의견이 있으시다면 댓글 부탁드립니다 :)

댓글