2022-06-12 Lv1 신고결과 받기

정종훈·2022년 6월 12일
0

알고리즘 문제풀이

목록 보기
3/10

// 걸린시간 : 1시간 정도

// 걸린이유 : 문제 자체를 이해하는데 어려웠고, 그에 따라 로직을 짜느넛 조차 시간이 많이 걸림.

// 느낀점 : 객체를 너무 많이 이용하고 있다는 느낌이 듬.

// 개선할 코드 : reportState와 mailMember을 한 가지 작동으로 통합할 수는 없을까?

function solution(id_list, report, k) {
  // report 배열에서 중복을 없애기
  report = [...new Set(report)];
  // reportState객체 생성하기
  const reportState = {};
  // goodMember 배열 생성하기
  let mailMember = [];

  // report 배열을 순회하면서 reportState에 저장하기
  report.forEach((el) => {
    const [reporter, reported] = el.split(" ");
    if (!reportState[reported]) {
      reportState[reported] = [reporter];
    } else {
      reportState[reported].push(reporter);
    }
  });
  // console.log(reportState);
  // reportState객체를 순회하면서 키의 값이 k이상 인것만 필터하여 신고자들을 mailMember 배열에 저장한다.
  for (let key in reportState) {
    if (reportState[key].length >= k) {
      mailMember.push(...reportState[key])              
    }
  }
  // console.log(mailMember);
  // id_list를 map 으로 순회하며 메일 받는횟수 리턴
  return id_list.map((el) => {
    let count = 0;
    mailMember.forEach((innerEl) => {
      if (innerEl === el) {
        count += 1;
      }
    })
    return count;
  })
}

console.log(
  solution(
    ["muzi", "frodo", "apeach", "neo"],
    ["muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"],
    2
  )
);
profile
괴발개발자에서 개발자로 향해보자

0개의 댓글