신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.
각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.
각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 하도록 solution 함수를 완성해주세요.
const solution = (id_list, report, k) => {
const answer = new Array(id_list.length);
answer.fill(0);
/*answer를 id_list 크기를 가진 배열을 만들고
fill 메서드를 활용해 초기값을 0으로 할당*/
const report_list = {};
id_list.map(user_id => {
report_list[user_id] = [];
});
/*report_list 객체에
key는 유저id value는 신고한 사람을 담기위한 빈 배열을 추가*/
report.map(users => {
const [user_id, report_id] = users.split(' ');
if (!report_list[report_id].includes(user_id)) {
report_list[report_id].push(user_id);
}
});
/*신고한 id 와 신고당한 id로 나누기 위해 split 메서드를 이용한후
각각 user_id, report_id로 나누어줌. 배열에 포함여부를 확인하여
포함하지 않을때 신고자 이름 추가*/
for (key in report_list) {
if (report_list[key].length >= k) {
report_list[key].map(user => {
answer[id_list.indexOf(user)] += 1;
});
}
}
/*report_list의 배열의 길이가 k값 이상이면 정지된 유저
answer에 해당 유저를 신고한 유저가 받은 메일을 수를 +1.*/
return answer;
};
const id_list = ['muzi', 'frodo', 'apeach', 'neo'];
const report = [
'muzi frodo',
'apeach frodo',
'frodo neo',
'muzi neo',
'apeach muzi',
];
const k = 2;
solution(id_list, report, k);