function solution(id_list, report, k) {
// 이메일 받는 횟수를 측정하기 위한 배열
let ans = new Array(id_list.length).fill(0);
// 신고 당한 유저(key), 신고한 유저(value)의 객체
let report_list = {};
id_list.map((user) => {
//key로 userid를, value로 빈 배열을 가지는 객체
report_list[user] = [];
})
report.map((user) => {
let [user_id, report_id] = user.split(" ");
// 신고 당한 사람을 신고한 사람이 이미 한번 신고를 했었다면 그냥 넘기고
// 처음 신고하는 것이라면 신고 당한 사람(key)의 빈 배열(value)에 신고한 유저를 push한다.
if(!report_list[report_id].includes(user_id)){
report_list[report_id].push(user_id);
}
})
for(let key in report_list){
// 신고 당한 횟수가 k 이상이라면(key 유저를 신고한 사람이 k 이상이라면)
if(report_list[key].length >= k){
// key 유저를 신고한 사람들의 값을 증가시킨다(이메일을 받는 횟수를 증가시킨다)
report_list[key].map((user)=>{
ans[id_list.indexOf(user)] += 1
})
}
}
return ans;
}
코드 실행 테스트 케이스는 통과를 했는데, 제출 시 테스트 케이스들에서 오답 처리되는 것을 해결하지 못해서 결국 다른 분 풀이를 참고했다.
분명히 로직이 같은데 왜 나는 오답이 됐는지 모르겠다 ㅠㅠ
객체의 key-value 구조를 활용하셨다. 이게 아무래도 시간 초과 문제를 많이 해결해줬을 것으로 보인다.
필자는 new Set 객체를 통해서 중복 신고를 제거하고 진행했었는데,
그 부분은 문제가 없었고,
아무래도 이메일 받는 횟수를 처리하는 과정에서 실수가 있었던 모양이다.