@@ -36,4 +36,48 @@ function solution(record) {
36
36
map . set ( uid , name ) ;
37
37
}
38
38
return answer . map ( ele => map . get ( ele [ 0 ] ) + ele [ 1 ] ) ;
39
- }
39
+ }
40
+
41
+ //정답 3 - chaerin-dev
42
+ function solution ( record ) {
43
+ // 최종 메시지를 저장할 배열
44
+ let result = [ ] ;
45
+ // 채팅방을 출입하는 유저의 아이디를 차례로 저장할 배열
46
+ let resultId = [ ] ;
47
+ // 유저의 아이디: 닉네임 쌍을 저장할 Map
48
+ let idNameMap = new Map ( ) ;
49
+
50
+ // record의 각 문자열을 띄어쓰기 단위로 나눠 배열로 변환
51
+ record = record . map ( ( e ) => e . split ( " " ) ) ;
52
+
53
+ // record의 각 요소에 대해
54
+ record . forEach ( ( e ) => {
55
+ // 각 요소의 첫 번째 요소(Enter/Leave/Change)가
56
+ switch ( e [ 0 ] ) {
57
+ // Enter이면
58
+ case "Enter" :
59
+ // resultID 배열에 들어온 유저의 아이디 저장
60
+ resultId . push ( e [ 1 ] ) ;
61
+ // result 배열에 닉네임을 제외하고 표시될 메시지 저장
62
+ result . push ( "님이 들어왔습니다." ) ;
63
+ // idNameMap Map에 유저의 아이디: 닉네임 쌍 저장
64
+ idNameMap . set ( e [ 1 ] , e [ 2 ] ) ;
65
+ break ;
66
+ // Leave이면
67
+ case "Leave" :
68
+ // resultID 배열에 들어온 유저의 아이디 저장
69
+ resultId . push ( e [ 1 ] ) ;
70
+ // result 배열에 닉네임을 제외하고 표시될 메시지 저장
71
+ result . push ( "님이 나갔습니다." ) ;
72
+ break ;
73
+ // Change이면
74
+ case "Change" :
75
+ // idNameMap Map에 유저의 아이디에 해당하는 닉네임 변경
76
+ idNameMap . set ( e [ 1 ] , e [ 2 ] ) ;
77
+ break ;
78
+ }
79
+ } ) ;
80
+
81
+ // resultId의 각 요소에 해당하는 닉네임을 idNameMap에서 찾아서 result의 각 요소와 이어붙인 값 배열 반환
82
+ return result . map ( ( e , i ) => idNameMap . get ( resultId [ i ] ) + e ) ;
83
+ }
0 commit comments