Programmers - 오픈 채팅방 (Javascript)

Hyeon·2021년 9월 18일
0
function solution(record) {
    let answer = [];
    let nameObj = {};
    let temp, dir, uid, name;
    record.forEach((r)=>{
        let temp = r.split(' ');
        dir = temp[0];//Enter, Leave, Change
        uid = temp[1];//아이디
        name = temp[2];//닉네임
        
        if(dir!=='Change') answer.push([uid,dir])//아이디와 방향 저장
        if(dir!=='Leave')  nameObj[uid] = name;//아이디와 닉네임 저장
    })
    
    answer = answer.map((item)=>{
        return `${nameObj[item[0]]}님이 ${item[1]==='Enter'?'들어왔습니다.':'나갔습니다.'}`;
    })
    return answer;
}

풀이

입력을 순차적으로 읽으면서 아이디와 방향, 그리고 아이디와 닉네임을 따로 저장했다. 결과값에 아이디 변경은 출력하지 않으므로 아이디와 방향을 저장할 때는 Change를 제외시켜야 한다. 또한 닉네임 변경은 Leave일 때 발생하지 않으므로 아이디와 닉네임 저장에서 제외시켰다. 마지막에 저장해 놓은 아이디와 방향, 아이디와 닉네임을 적절히 조합해서 answer를 만들었다.

profile
요즘 인터렉티브한 웹에 관심이 많습니다.

0개의 댓글