https://programmers.co.kr/learn/courses/30/lessons/42888
function solution(record) {
let splitRecord = []
let chattingBox = [];
let result = [];
record.forEach(user => {
splitRecord.push(user.split(" "))
});
for(let i = 0; i < splitRecord.length; i++) {
if(splitRecord[i][0] == "Enter") {
if(chattingBox.length == 0) { // 유저가 채팅방에 최초로 들어올 경우
chattingBox.push(splitRecord[i]);
} else { // 채팅방에 이미 유저가 있는 경우
chattingBox.map(user => {
user[1] !== splitRecord[i][1] // 채팅방에 온 적이 없는 유저면
? chattingBox.push(splitRecord[i]) // 해당 유저를 채팅방 배열에 저장
: user[2] = splitRecord[i][2] // 온 적 있는 유저면 새로운 정보로 저장
});
}
}
if(splitRecord[i][0] == "Change" && chattingBox.length > 0) {
chattingBox.map(user => {
user[1] == splitRecord[i][1]
? user[2] = splitRecord[i][2]
: user
});
}
if(splitRecord[i][0] == "Leave") {
chattingBox.push(splitRecord[i]);
}
}
chattingBox.map(user => {
if(user[0] == "Enter") {
result.push(`${user[2]}님이 들어왔습니다.`);
}
if(user[0] == "Leave") {
result.push(`${user[2]}님이 나갔습니다.`);
}
});
return result;
}
유저 아이디와 닉네임만 체크를 하여 Enter와 Leave로 구분해서 출력해주면 되었는데
나는 Enter, Change, Leave를 먼저 체크하면서
채팅방에 온 적이 있는 유저를 확인하는 방식으로 코드를 짰다
너무 복잡하게 경우를 나눠버렸다..
다른 분들 코드 보니까 내 코드 엄청 지저분 🤦♀️
저러니 시간초과가 뜨지..😭
여기까진 기분 좋았다 :) .....
언젠가는 한번에 뙇 테스트를 통과하는 날이 오겠지? 🤧
https://velog.io/@sso/프로그래머스-javascript-오픈채팅방
https://kyun2da.github.io/2020/07/05/openchat/