작성일 : November 2, 2021

문제 : https://programmers.co.kr/learn/courses/30/lessons/42888

해설 : https://kis6473.tistory.com/167

나의 풀이

정확성: 3.1
효율성: 0.0
합계: 3.1 / 50

function solution(record) {
    let map = [];
    let answer = [];
    
    let split = record.map(str => str.split(' '));
    
    split.forEach(arr => {
        if(arr[0] === 'Enter') {
            map.forEach(tmp => {
                if(tmp.id === arr[1]) {
                    tmp.name=arr[2];
                }
            })
            
            map.push({
                id:arr[1],
                name:arr[2],
                act:'님이 들어왔습니다.'
            });
        }
        if(arr[0] === 'Leave') {
            let tmp = map.filter(obj => obj.id === arr[1]);
            map.push({
                id:arr[1],
                name:tmp.name,
                act:'님이 나갔습니다.'
            });
        }
        if(arr[0] === 'Change') {
            map.forEach(tmp => {
                if(tmp.id === arr[1]) {
                    tmp.name=arr[2];
                }
            })
        }
    });
    
    answer = map.map(arr => arr.name + arr.act);
    
    return answer;
}

풀이 해설

Untitled

후기

  1. 구조분해 할당을 사용하자
  2. Map() 자료구조는 get, push, set, delete, clear, size을 사용 가능하다
  3. id와 name은 map으로 관리한다