난이도 : Level. 2
언어 : Javascript
출제 내역 : 2019 KAKAO BLIND RECRUITMENT
오픈 채팅방 메세지를 출력하자
function solution(record) {
var answer = [];
const strArr = [];
const uidArr = [];
const idArr = [];
const idObj = {};
for (let i = 0; i<record.length; i++) {
let split1 = record[i].split(',');
let split2 = split1[0].split(' ');
strArr.push(split2[0]);
uidArr.push(split2[1])
idArr.push(split2[2])
}
for (let i = 0; i<uidArr.length; i++) {
if (idArr[i] !== null) {
idObj[uidArr[i]] = idArr[i];
}
}
메세지, 아이디, 이름을 담을 배열에 해당하는 값을 넣어주고,
객체를 이용해 아이디에 따른 이름을 넣어줍니다.
for (let i = 0; i<strArr.length; i++) {
if (strArr[i] === 'Enter') {
answer.push(idObj[uidArr[i]]+"님이 들어왔습니다.")
} else if (strArr[i] === "Leave") {
answer.push(idObj[uidArr[i]]+"님이 나갔습니다.")
}
}
return answer;
}
그 뒤, 명령어에 따른 이름 값과 메세지를 출력해 정답 배열에 넣어줍니다.
하지만 정답으로는 인정 되진 않았습니다.
function solution(record) {
let answer = [];
let newArr = record.map((str) => str.split(" "));
let nickNameSet = {};
for (let i = 0; i < newArr.length; i++) {
if (newArr[i].length === 3) {
nickNameSet[newArr[i][1]] = newArr[i][2];
}
}
for (let 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;
};
비슷해 보이지만 다른 방식으로 진행 되는데,
정답으로 처리가 되어서 좋은 것 같습니다.