https://school.programmers.co.kr/learn/courses/30/lessons/92334
function solution(id_list, report, k) {
const reporterDict = {}
const reportedDict = {}
const stoppedId = new Set()
id_list.map(id=>{
reporterDict[id] = new Set()
reportedDict[id] = new Set()
})
report.map(item=>{
const reporter = item.split(" ")[0]
const reported = item.split(" ")[1]
reporterDict[reporter].add(reported)
reportedDict[reported].add(reporter)
})
id_list.map(id=>{
if (reportedDict[id].size>=k) {
stoppedId.add(id)
}
})
return id_list.map(id=>new Set([...reporterDict[id]].filter(x => stoppedId.has(x))).size)
}
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;
}