코딩테스트/Programmers

오픈 채팅방 (JS)

동띵 2025. 1. 6. 21:20

https://school.programmers.co.kr/learn/courses/30/lessons/42888?language=javascript

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

function solution(record) {
    const answer = [];
    const uid = {};
    
    record.forEach(entry => {
        const [action, id, nickname] = entry.split(' ');
        if (action === 'Enter' || action === 'Change') {
            uid[id] = nickname;
        }
    })
    
    record.forEach(entry => {
        const [action, id] = entry.split(' ');
        if (action === 'Enter') {
            answer.push(`${uid[id]}님이 들어왔습니다.`);
        }
        if (action === 'Leave') {
            answer.push(`${uid[id]}님이 나갔습니다.`);
        }
    })

    return answer;
}

 

유저 닉네임은 Change와 Enter 명령어에서만 결정되므로,

이 두 명령어가 호출될 때만 uid 객체에 userId를 키로 하여 닉네임을 저장했다.

이후, 닉네임이 최종적으로 업데이트된 상태에서 record를 순회하며 각 명령어에 따라 메시지를 구성해 answer 배열에 넣어주었다.

'코딩테스트 > Programmers' 카테고리의 다른 글

신고 결과 받기 (JS)  (0) 2025.01.07
베스트 앨범 (JS)  (1) 2025.01.06
표 편집 (JS)  (1) 2025.01.05
크레인 인형 뽑기 (JS)  (0) 2025.01.05
방문 길이 (JS)  (0) 2025.01.05