코딩테스트

[프로그래머스/javascript] 오픈채팅방 (다시 풀어보기)

_서리__ 2023. 3. 3. 10:05
function solution(record) {
    record = record.map((el)=>el.split(" "))
    var answer = [];
    let ids = {};
    let index = {};
    let id = ''
    //index를 저장해놓고, 
    for(let i=0;i<record.length;i++){
        id = record[i][1]
        if(!ids[id]) ids[id] = record[i][2];
        if(!index[id]) index[id] = [];
        index[id].push(i)
        if(record[i][0]==="Change"||(record[i][0]==="Enter"&&ids[id]&&ids[id]!==record[i][2])){
            index[id].map((el)=>{
                if(el<i){
                    record[el][2] = record[i][2];
                    ids[id] = record[i][2]
                }
            }
            )
        }else if(record[i][0]==="Leave"){
            record[i][2] = ids[id]
        }
    }
    for(let i=0;i<record.length;i++){
        if(record[i][0]==="Enter"){
            answer.push(`${record[i][2]}님이 들어왔습니다.`)
        }else if(record[i][0]==="Leave"){
            answer.push(`${record[i][2]}님이 나갔습니다.`)
        }
    }
    return answer;
}

더 나은 풀이법이 있다 다시 풀어볼것 결은 비슷한듯