프로그래머스 오픈채팅방 JavaScript

2023년 1월 4일

프로그래머스 오픈채팅방

문제 풀이

입력 값 record는 (액션, 유저 아이디, 닉네임)의 형태다.

function recordUserAndAction(record) :
  • [액션, 유저 아이디, 닉네임] = rocord[i].split(' ')
  • Return 값
    • users: (유저 아이디: 닉네임) 형태의 딕셔너리
    • actionRecord: [유저 아이디, 액션] 형태의 배열
  • action에 따른 동작:
    • Enter: users[유저 아이디]의 닉네임 갱신, actionRecord.push
    • Leave: actionRecord.push
    • Change: users[유저 아이디]의 닉네임 갱신
function chatMessage(users, actionRecord) :
  • 배열 actionRecord의 item [유저 아이디, 액션]의 유저 아이디를 이용해 users에서 닉네임을 얻어 액션에 따라 문자열을 push 해준다.
solution.js
function solution(record) {
    const [ users, actionRecord ] = recordUserAndAction(record);
    const answer = chatMessage(users, actionRecord);
    return answer;
}
function recordUserAndAction(record) {
    const users = {};
    const actionRecord = [];

    record.forEach(item => {
        const [ action, user, nickname ] = item.split(' ');
        if (action === 'Enter') {
            users[user] = nickname;
            actionRecord.push([user, action]);
        }
        else if (action === 'Leave') {
            actionRecord.push([user, action]);
        }
        else {
            users[user] = nickname;
        }
    });
    return [users, actionRecord];
}
function chatMessage(users, actionRecord) {
    const answer = [];

    actionRecord.forEach(item => {
        const [ user, action ] = item;
        (action === 'Enter') === true ? answer.push(`${users[user]}님이 들어왔습니다.`) : answer.push(`${users[user]}님이 나갔습니다.`);
    })
    return answer;
}

댓글