알고리즘

프로그래머스 JS | 오픈채팅방

3jun 2022. 7. 2. 06:46
출처 : 프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - 오픈채팅방

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

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

❌ Solution ( 정확성 6.3)

function solution(record) {
    let answer = [];
    const users = [];
    
    for( let i = 0; i < record.length; i++) {
        let arr = record[i].split(' ')
        if( arr[0] === 'Enter') {
            users.push({ uuid: arr[1], id: arr[2]})
        } else if (arr[0] === 'Leave') {
            for( let j = 0; j < users.length; j++) {
                if (users[j]['uuid'] === arr[1]) {
                    users.splice(j, 1)
                }
            }
        } else if( arr[0] === 'Change') {
            for( let j = 0; j < users.length; j++) {
                if (users[j]['uuid'] === arr[1]) {
                    users[j]['id'] = arr[2];
                }
            }
        }
    }
    
    for(let i = 0; i < record.length; i++) {
        let arr = record[i].split(' ')
        if( arr[0] === 'Enter') {
            for( let j = 0; j < users.length; j++) {
                if (users[j]['uuid'] === arr[1]) {
                    answer.push(users[j]['id'] + "님이 들어왔습니다.")
                }
            }
        } else if (arr[0] === 'Leave') {
            for( let j = 0; j < users.length; j++) {
                if (users[j]['uuid'] === arr[1]) {
                    answer.push(users[j]['id'] + "님이 나갔습니다.")
                }
            }
        } 
    }
    return answer;
}

✅ Solution ( https://kis6473.tistory.com/ 님 코드 )

function solution(record) {
    let answer = [];
    const map = new Map();
    
    for (let i = 0; i < record.length; ++i) {
        const [state, uid, name] = record[i].split(' ');
        
        if (state == 'Leave') {
            answer.push([uid, '님이 나갔습니다.']);
            continue;
        }
        if (state == 'Enter') {
            answer.push([uid, '님이 들어왔습니다.']);
        }

        map.set(uid, name);
    }

    return answer.map(ele => map.get(ele[0]) + ele[1]);
}
참고 
 

프로그래머스 - 오픈채팅방 (javascript)

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

kis6473.tistory.com