본문 바로가기
알고리즘/프로그래머스

[프로그래머스][자바스크립트][Level2][카카오] 오픈채팅방

by Benjamin_Choi 2021. 7. 22.
function solution(record) {    
    const uidToName = record.reduce((obj, item) => {
        const itemArr = item.split(" ");
        if (!obj[itemArr[1]]) {
            obj[itemArr[1]] = itemArr[2];
        } else if (itemArr[0] === "Enter" || itemArr[0] === "Change") {
            obj[itemArr[1]] = itemArr[2];
        }
        return obj;    
    }, {});

    const answer = record.reduce((arr, item) => {
        const itemArr = item.split(" ");
        if (state[itemArr[0]]) {
            arr.push(`${uidToName[itemArr[1]]}님이 ${state[itemArr[0]]}`);    
        }
        return arr;
    }, []);    
    
    return answer;
}

const state = {
    "Enter": "들어왔습니다.",
    "Leave": "나갔습니다.",
}

크게 특별한 점은 없었다.

마지막에 정해진 이름으로 전부 바뀌는 구조이므로

우선 결론적으로 정해진 uid: name 으로 매칭되는 해시테이블을 먼저 만들어 놓고 

그 이후에 해당 이름을 가지고 결정된 메세지를 만들어줬다. 

메세지를 만들면서 이름을 확인하는 식이면 메세지를 만들다가 이름이 바뀌면 다시 다 바꿔줘야되는 식이라 복잡해지므로 위처럼 해결했다.

 

댓글