https://programmers.co.kr/learn/courses/30/lessons/42888
function solution(record) {
let tmp = [];
var answer = [];
let hash_map = new Map();
for (let i = 0; i < record.length; i++) {
let arr = record[i].split(" ");
if (arr[0] !== "Leave") hash_map.set(arr[1], arr[2]);
if (arr[0] !== "Change") tmp.push([arr[0], arr[1]]);
}
for (let i = 0; i < tmp.length; i++) {
if (tmp[i][0] == "Enter") {
answer.push(`${hash_map.get(tmp[i][1])}님이 들어왔습니다.`);
} else {
answer.push(`${hash_map.get(tmp[i][1])}님이 나갔습니다.`);
}
}
return answer;
}
✔ 알고리즘 : 문자열 + Hashing
✔ 이름은 결국 ID를 따라가므로 tmp에 ID를 저장한후 마지막에 변환하여 출력하는게 문제를 푸는 핵심이다
✔ Leave가 아니면 처음으로 id가 들어오는 Enter인 경우와 id와 연동된 닉네임을 변경하는 Change가 존재하므로 hash_map에 id를 key로 닉네임을 value로 저장한다
✔ Change가 아니면 모두 출력해야하는 상황이므로 tmp에 push한다
✔ Enter인 경우와 Leave인 경우가 현재 tmp에 있으므로 hash_map의 get함수를 통해 닉네임을 찾아서 ans에 push
✔ 난이도 : 프로그래머스 기준 LEVEL 2