[알고리즘]신고 결과 받기

성준영·2022년 6월 30일
0

자세한 문제 설명은 아래 링크를 참조하세요
링크

전체 코드

function solution(id_list, report, k) {
  report = [...new Set(report)]; //중복 제거

  const user = {};

  id_list.forEach((id) => {
    user[id] = [0, []];
  }); // id: [신고 당한 횟수,[신고한 id 리스트]]

  report.forEach((data) => {
    const [id, reportedId] = data.split(" "); //  [신고한 사람, 신고당한 사람]
    user[id][1].push(reportedId); //신고한 사람 추가
    user[reportedId][0]++; //신고당한 횟수 세기
  });

  const banned = id_list.filter((id) => user[id][0] >= k); //정지당한 사람 ex) ["a","b"]

  const mailList = id_list.map((id) => {
    return user[id][1].filter((reportedId) => banned.includes(reportedId))
      .length;
  }); // 메일 받은 횟수

  var answer = [...mailList];
  return answer;
}

이 문제를 풀면서 두 배열의 교집합을 어떻게 구할지 생각하다가
결국 구글링의 힘을 빌렸다

arr1 = [1, 2, 3];
arr2 = [2, 3, 4];

const 교집합 = arr1.filter((data) => arr2.includes(data))//[2,3]; 

나중에 한 번 더 풀어봐야겠다

profile
기록해버리기

0개의 댓글