🔗 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42888
✏️ 풀이
function solution(record) {
const output = [];
const userInfo = {};
const message = {
Enter: '님이 들어왔습니다.',
Leave: '님이 나갔습니다.'
}
record.forEach(log => {
const [cmd, id, name] = log.split(' ');
if (name) {
userInfo[id] = name;
}
if (cmd !== 'Change') {
output.push([id, cmd]);
}
});
return output.map(([id, cmd]) => userInfo[id] + message[cmd]);
}
유저의 id에 대응되는 닉네임을 저장해뒀다가, 마지막에 등록된 닉네임으로 메시지를 출력하면 된다.
record를 순회하면서 userInfo에 유저 id에 해당하는 닉네임을 저장한다. Leave를 제외한 나머지 경우에는 항상 닉네임이 기록에 포함되어 있으므로, 그 때마다 userInfo를 갱신한다. 그리고 Change를 제외한 경우에만 메시지를 출력하므로, output에 기록을 [id, cmd] 형태로 추가합니다.
최종적으로 output을 순회하면서 [id, cmd]를 메시지의 형태로 바꿔서 출력하였습니다.
'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스 Level 2] 위장 - JavaScript (0) | 2022.05.25 |
---|---|
[프로그래머스 Level 2] 뉴스 클러스터링 - JavaScript (0) | 2022.05.16 |
[프로그래머스 DFS/BFS] 타겟 넘버 - JavaScript (0) | 2022.05.10 |
[프로그래머스 Level 2] 거리두기 확인하기 - JavaScript (0) | 2022.05.09 |
[프로그래머스 Level 2] 게임 맵 최단거리 - JavaScript (0) | 2022.05.09 |