Algorithm/프로그래머스
2022 KAKAO BLIND RECRUITMENT) 신고 결과 받기신고 결과 받기
choogro
2022. 7. 7. 13:29
문제
https://school.programmers.co.kr/learn/courses/30/lessons/92334
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(id_list, report, k) {
var answer = [];
answer = Array.from({ length: id_list.length }, () => 0);
const reportArr = [...new Set(report)].map((v) => v.split(" "));
let reportMap = new Map();
for (let x of reportArr) {
reportMap.set(x[1], reportMap.get(x[1]) + 1 || 1);
}
for (let x of reportMap) {
if (x[1] >= k) {
for (let y of reportArr) {
if (y[1] === x[0]) {
answer[id_list.indexOf(y[0])] = answer[id_list.indexOf(y[0])] + 1;
}
}
}
}
return answer;
}
const id_list = ["muzi", "frodo", "apeach", "neo"];
const report = [
"muzi frodo",
"apeach frodo",
"frodo neo",
"muzi neo",
"apeach muzi",
];
const k = 2;
console.log(solution(id_list, report, k));
1) 문제의 조건에 따라 한 아이디에서 같은 아이디로의 중복된 신고를 제거해주기 위해 Set을 활용하였습니다.
2 ) 신고 횟수는 Map 을 활용하였습니다.
key: 신고당한 아이디
value: 횟수 카운트
3) Map을 for으로 순회하면서 value가 k보다 높은 아이디가 있으면 해당 아이디를 신고한 유저에게 answer 배열에 카운트를 증가시켰습니다.