자세한 문제 설명은 아래 링크를 참조하세요
링크
전체 코드
function solution(id_list, report, k) {
report = [...new Set(report)]; //중복 제거
const user = {};
id_list.forEach((id) => {
user[id] = [0, []];
}); // id: [신고 당한 횟수,[신고한 id 리스트]]
report.forEach((data) => {
const [id, reportedId] = data.split(" "); // [신고한 사람, 신고당한 사람]
user[id][1].push(reportedId); //신고한 사람 추가
user[reportedId][0]++; //신고당한 횟수 세기
});
const banned = id_list.filter((id) => user[id][0] >= k); //정지당한 사람 ex) ["a","b"]
const mailList = id_list.map((id) => {
return user[id][1].filter((reportedId) => banned.includes(reportedId))
.length;
}); // 메일 받은 횟수
var answer = [...mailList];
return answer;
}
이 문제를 풀면서 두 배열의 교집합을 어떻게 구할지 생각하다가
결국 구글링의 힘을 빌렸다
arr1 = [1, 2, 3];
arr2 = [2, 3, 4];
const 교집합 = arr1.filter((data) => arr2.includes(data))//[2,3];
나중에 한 번 더 풀어봐야겠다