[프로그래머스/2022 KAKAO BLIND] 신고 결과 받기

김_리트리버·2022년 4월 11일
0

[알고리즘]

목록 보기
47/47
function solution(id_list, report, k) {
  const result = new Array(id_list.length);

  /* 
    
    각 유저별 이메일을 받은 횟수를 구하라

    이메일을 받은 횟수를 구하려면 ?? 

    유저(victim)가 신고한 유저(suspect) 가 특정횟수(k) 이상 신고받았으면 
    
    유저(victim) 은 이메일을 받는다. 

    신고당한 유저 (suspect) 가 자신을 신고한 유저(victim)들의 정보를 가지고 있으면 

    신고한 유저(victim) 의 갯수를 세는 것으로 이메일을 보낼지 조건을 확인할 수 있음

    
    
    */

  const users = {};

  id_list.forEach((id, index) => {
    users[id] = {
      index,
      victims: [],
      email: 0,
    };
  });

  report.forEach((relation) => {
    const [victim, suspect] = relation.split(" ");

    if (!users[suspect].victims.includes(victim)) {
      users[suspect].victims.push(victim);
    }
  });

  Object.keys(users).forEach((id) => {
    if (users[id].victims.length >= k) {
      users[id].victims.forEach((id) => {
        users[id].email++;
      });
    }
  });

  Object.keys(users).forEach((id) => {
    const { index, email } = users[id];
    result[index] = email;
  });

  return result;
}
profile
web-developer

0개의 댓글