2022 카카오 블라인드 채용
function solution(id_list, report, k) {
// ✅ { 유저id: 신고를 당한 횟수 }
const reportedNum = {};
// ✅ { 유저id: 이메일 받는 횟수 }
const getEmailNum = {};
id_list.forEach(user => getEmailNum[user] = 0);
// ✅ report 중복 요소 제거
const reportSet = new Set(report);
report = [...reportSet].map(el => el.split(' '));
report.forEach(reportInfo => {
reportedNum[reportInfo[1]] = (reportedNum[reportInfo[1]] || 0) + 1;
})
// ✅ 신고를 당한 횟수가 k 이상인 유저만 필터
const valReportedNumArr = Object.entries(reportedNum)
.filter(info => info[1] >= k)
.map(info => info[0]);
// ✅ 유저별로 이메일 받는 횟수를 객체에 정리
report.forEach(info => {
if (valReportedNumArr.includes(info[1])) getEmailNum[info[0]] += 1;
});
return id_list.map(id => getEmailNum[id]);
}
입력값의 제한은 다음과 같다.
문제 풀이 흐름을 다음과 같이 잡았다.