프로그래머스 오픈채팅방 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;
}