본문 바로가기

프로그래머스

6/14[문제풀이] 프로그래머스 Lv2 오픈채팅방

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

 

[문제풀이]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function solution(record) {
    const users = {};
    
    record.forEach(log => {
        
        const [msg, userId, nickname] = log.split(' ');
        
        if(msg === 'Enter') {
         
            users[userId] = nickname;
        } else if(msg === 'Change'){
        
            users[userId] = nickname;
        }
        
    });
 
    const settingSentence = {
        
        "Enter" : nickname => `${nickname}님이 들어왔습니다.`,
        "Leave" : nickname => `${nickname}님이 나갔습니다.`
        
    }
    
    const answer = [];
    
    record.forEach(log => {
        
        const [msg, userId] = log.split(' ');
        if(msg !== 'Change') answer.push(settingSentence[msg](users[userId]));
        
    })
    
    return answer;
    
}
cs

 

우선 record 변수에 들어오는 것을 형식에 맞게 split을 통해 msg, userId, nickname으로 구분해주는 것이 제일 중요한 작업이었던 것 같다. 그리고 Enter의 경우에는 user의 nickname을 등록하고 Change의 경우에도 다시 변경된 nickname으로 다시 세팅해주고 결과값으로 나와야 할 부분을 settingSentence 함수 내에 구현해주었다.