알고리즘/프로그래머스
[프로그래머스][자바스크립트][Level2][카카오] 오픈채팅방
Benjamin_Choi
2021. 7. 22. 23:39
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 으로 매칭되는 해시테이블을 먼저 만들어 놓고
그 이후에 해당 이름을 가지고 결정된 메세지를 만들어줬다.
메세지를 만들면서 이름을 확인하는 식이면 메세지를 만들다가 이름이 바뀌면 다시 다 바꿔줘야되는 식이라 복잡해지므로 위처럼 해결했다.