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 으로 매칭되는 해시테이블을 먼저 만들어 놓고
그 이후에 해당 이름을 가지고 결정된 메세지를 만들어줬다.
메세지를 만들면서 이름을 확인하는 식이면 메세지를 만들다가 이름이 바뀌면 다시 다 바꿔줘야되는 식이라 복잡해지므로 위처럼 해결했다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][자바스크립트][Level1] 로또의 최고 순위와 최저 순위 (0) | 2022.01.01 |
---|---|
[프로그래머스][자바스크립트][Level1] 부족한 금액 계산하기 (0) | 2021.08.05 |
[프로그래머스][자바스크립트][Level2][카카오] 문자열 압축 (0) | 2021.07.22 |
[프로그래머스][자바스크립트][Level2] 124 나라의 숫자 (0) | 2021.07.21 |
[프로그래머스][자바스크립트][Level2] 타겟 넘버 (0) | 2021.07.20 |
댓글