function solution(record) {
var answer = [];
const obj = {};
record.map((r) => {
const arr = r.split(' ')
if(arr[0] === 'Enter') {
obj[arr[1]] = arr[2];
answer.push(`${arr[1]}님이 들어왔습니다.`);
} else if(arr[0] === 'Leave'){
answer.push(`${arr[1]}님이 나갔습니다.`);
} else if(arr[0] === 'Change') {
obj[arr[1]] = arr[2];
}
})
answer = answer.map((a) => {
const arr = a.split('님')
a = `${obj[arr[0]]}님${arr[1]}`;
return a;
})
return answer;
}
먼저 split
을 활용해서 공백을 기준으로 잘라주었다. 그리고 Enter
와 Leave
, Change
에 따라서 각각 처리를 했는데 Javascript의 Object는 복사를 할 때 얕은 복사를 해서 그 방식을 활용할 수 있지 않을까 했는데 답은 배열로 return
해 줘야해서 약간 생각을 바꿨다. obj의 키가 같으면 마지막에 바뀌는 값이 들어가고 그 값으로 마지막에 대입을 해주는 방식으로 해결을 했는데 const arr = a.split('님')
부분이 마음에 안든다..ㅠ 한글을 이용해 자르기도 했고 Enter
와 같은 상태도 object를 사용했으면 좀 더 깔끔하게 해결할 수 있었을 거 같다.