Programmers - 오픈채팅방

Doodream·2021년 4월 8일
0

코딩테스트

목록 보기
22/22
post-thumbnail

💻 오픈채팅방


❓ 문제

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

✔️ 코드

function solution(record) {
    var answer = [];
    var newArr = record.map(str => str.split(" "));

    var nickNameSet = {};
    for (var i = 0; i < newArr.length; i++) {
        if (newArr[i].length === 3) {
            nickNameSet[newArr[i][1]] = newArr[i][2];
        }
    }

    for (var i = 0; i < newArr.length; i++) {
        if (newArr[i][0] === 'Enter') {
            answer.push(nickNameSet[newArr[i][1]] + '님이 들어왔습니다.');
        } else if (newArr[i][0] === 'Leave') {
            answer.push(nickNameSet[newArr[i][1]] + '님이 나갔습니다.');
        }
    }

    return answer;
}

var record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo", "Leave uid1234", "Enter uid1234 Prodo", "Change uid4567 Ryan"];
console.log(solution(record));

❗️풀이과정

문제에서 레코드에 있는 유저 정보에 대한 처리가 끝난 다음에 채팅창에 보여지는 것이라고 설명했다.

위 말은 레코드에 대해서 유저에 대한 정보를 따로 처리 한다음, 채팅창에 보여지는 문제를 설명하면 된다.

문제를 잘 읽어보면 Enter uid1234 Prodo 이말은 Enter 명령어가 들어간 이후에는 유저의 닉네임은 무조건 변하거나 새로 유저이다. 즉, 유저 데이터를 저장할 공간에 Enter과 Change는 유저 닉네임을 무조건 변경하는 명령어 이다.

따라서 레코드를 한바퀴 돌면서 Enter와 Change에는 유저 닉네임을 업데이트 하고 Leave는 걸러내면된다.

이후 출력시 Leave 명령어와 Enter 명령어만 출력해주면 끝.

객체

객체의 표현법에서 a는 새로들어온 속성이 있을때 기존 속성이 없어도 a['apple'] = '사과' 라는 표현에서 바로 해당 값들이 삽입이된다.
또한 a['apple'] = '사과는 빨개'에서 기존 속성을 탐색하고 업데이트 까지 하는 기능도 있다.

배운점

  • 객체
profile
일상을 기록하는 삶을 사는 개발자 ✒️ #front_end 💻

0개의 댓글