id_list.map을 통해 userList를 key,value로 만들어 줍니다. => userList 는 신고당한 사람들이 key로 value에는 신고를 한 사람들을 저장해줍니다.
report.map 을 통해 report로 부터 받은 string을 split 하여 가공 가능한 자료로 바꾸어 줍니다. => user_id,report_id 로 신고한 사람과 신고 당한 사람을 각각 분류
"한 유저를 여러번 신고할 수도 있지만, 동인한 유저에 대한 신고 횟수는 1회로 처리됩니다." 의 조건을 해결 => userList[신고당한 사람]이 신고한 사람이랑 같지 않게 조건식을 만들어 줍니다.
userList(신고 당한 사람)의 length 가 k의 값과 같거나 클 때 -> 해당 userList[key]에 해당하는 value는 object 형식이기 때문에 for문이나 map을 사용하여 id_list.indexOf()를 이용해 answer인덱스에 해당하는 값을 더해줍니다.
코드
function solution(id_list, report, k) {
const answer = new Array(id_list.length).fill(0);
let userList = [];
id_list.map((value)=>{
userList[value]= [];
})
report.map(value=>{
const [user_id,report_id]=value.split(' ');
if(!userList[report_id].includes(user_id))userList[report_id].push(user_id);
})
for(const key in userList){
if(userList[key].length>=k){
userList[key].map(v=>{
answer[id_list.indexOf(v)]++;
})
}
}
return answer;
}
id_list.map을 통해 userList를 key,value로 만들어 줍니다. => userList 는 신고당한 사람들이 key로 value에는 신고를 한 사람들을 저장해줍니다.
report.map 을 통해 report로 부터 받은 string을 split 하여 가공 가능한 자료로 바꾸어 줍니다. => user_id,report_id 로 신고한 사람과 신고 당한 사람을 각각 분류
"한 유저를 여러번 신고할 수도 있지만, 동인한 유저에 대한 신고 횟수는 1회로 처리됩니다." 의 조건을 해결 => userList[신고당한 사람]이 신고한 사람이랑 같지 않게 조건식을 만들어 줍니다.
userList(신고 당한 사람)의 length 가 k의 값과 같거나 클 때 -> 해당 userList[key]에 해당하는 value는 object 형식이기 때문에 for문이나 map을 사용하여 id_list.indexOf()를 이용해 answer인덱스에 해당하는 값을 더해줍니다.
코드
function solution(id_list, report, k) {
const answer = new Array(id_list.length).fill(0);
let userList = [];
id_list.map((value)=>{
userList[value]= [];
})
report.map(value=>{
const [user_id,report_id]=value.split(' ');
if(!userList[report_id].includes(user_id))userList[report_id].push(user_id);
})
for(const key in userList){
if(userList[key].length>=k){
userList[key].map(v=>{
answer[id_list.indexOf(v)]++;
})
}
}
return answer;
}