function solution(id_list, report, k) {
report = [...new Set(report)]; // 중복 제거
for (let i=0; i<report.length; i++) {
report[i]=report[i].split(' ');
}
// 신고당한 사람
let reported = new Array(id_list.length).fill(0);
for (let i=0; i<report.length; i++) {
if (id_list.includes(report[i][1])) {
reported[id_list.indexOf(report[i][1])]++;
}
}
// 신고 해서 메일 받은 사람들 목록 (k번 이상)
let tmp = [];
for (let i=0; i<reported.length; i++) {
if (reported[i] >= k) {
for (let j=0; j<report.length; j++) {
if (report[j][1] === id_list[i]) {
tmp.push(report[j][0]);
}
}
}
}
// 메일 받은 사람들 정렬
let user = new Array(id_list.length).fill(0);
for (let i=0; i<tmp.length; i++) {
user[id_list.indexOf(tmp[i])]++;
}
return user;
}
console.log(
solution(
["muzi", "frodo", "apeach", "neo"],
["muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"],
2));
1
function solution(id_list, report, k) {
let answer = new Array(id_list.length);
answer.fill(0);
let report_list = {};
id_list.map((user) => {
report_list[user] = []
})
report.map((user) => {
const [user_id, report_id] = user.split(' ')
if (!report_list[report_id].includes(user_id)) {
report_list[report_id].push(user_id)
}
})
for (let key in report_list) {
if (report_list[key].length >= k) {
report_list[key].map((user) => {
answer[id_list.indexOf(user)] += 1
})
}
}
return answer;
}
console.log(
solution(
["muzi", "frodo", "apeach", "neo"],
["muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"],
2));
2
function solution(id_list, report, k) {
let reports = [...new Set(report)].map(a=>{return a.split(' ')});
let counts = new Map();
for (const bad of reports){
counts.set(bad[1],counts.get(bad[1])+1||1)
}
let good = new Map();
for(const report of reports){
if(counts.get(report[1])>=k){
good.set(report[0],good.get(report[0])+1||1)
}
}
let answer = id_list.map(a=>good.get(a)||0)
return answer;
}
console.log(
solution(
["muzi", "frodo", "apeach", "neo"],
["muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"],
2));