https://programmers.co.kr/learn/courses/30/lessons/92334
- 신고한 사람의 Map을 만든다.
- 한 사람이 한 사람을 중복 신고 가능하지만 1번으로 카운팅하기 때문에
같은 값들을 없애기 위해 report 배열을 Set사용해서 중복되는 신고 없앰- 신고 배열인 report를 for문을 돌려 어떤 사람이 어떤 사람을 신고했는지 setMap변수로 Map을 이용해 정리
- 신고 누적된 사람을 체크하기 위해 badMap변수로 Map을 이용해 만들어 신고 받은 사람의 신고 누적 수 관리
- Map세팅이 완료되면 id_list배열을 for문을 돌려 해당 아이디가 신고한 적이 있는지 확인
-> 5-1) 신고 경험 없음
: answer배열에 0 push한다
-> 5-2) 신고 경험 있음
: set.get()을 이용해 나온 신고 배열만큼 포문을 돌림
: 해당 신고 당한 사람이 K번 이상 신고 받았는지 확인
--> 5-2-1) K번 미만 : 카운팅 안함
--> 5-2-1) K번 이상 : 카운팅 함
: 카운트 된 값을 answer에 push- answer return
function solution(id_list, report, k) {
var answer = [];
var setMap = new Map();
var badMap = new Map();
var person, bPerson = '';
report = [...new Set(report)];
for(var i = 0; i < report.length; i++){
person = report[i].split(" ")[0];
bPerson = report[i].split(" ")[1];
if(setMap.get(person) == undefined){
setMap.set(person, [bPerson]);
}
else{
if(setMap.get(person).indexOf(bPerson) == -1){
setMap.get(person).push(bPerson);
}
}
if(badMap.get(bPerson) == undefined){
badMap.set(bPerson, 1);
}
else{
var cnt = badMap.get(bPerson);
cnt++;
badMap.set(bPerson, cnt);
}
}
for(var i = 0; i < id_list.length; i++){
if(setMap.get(id_list[i]) == undefined){
answer.push(0);
}
else{
var cnt = 0;
var tmpArr = setMap.get(id_list[i]);
for(var j = 0; j < tmpArr.length; j++){
if(badMap.get(tmpArr[j]) >= k)
cnt++;
}
answer.push(cnt);
}
}
return answer;
}