[Programmers] 92334 신고 결과 받기
프로그래머스는 레벨 별로 문제가 나뉘어져 있습니다. 그런데 레벨 1 문제에서 생각이 막히면 괜히 자괴감이 듭니다.
어떤 문제를 봐도 거리낌이 없이 노력해야겠습니다.
문제
풀이
문제의 조건을 간단하게 풀어보자면 이렇습니다.
신고자가 신고한 사람들의 명단 중에 몇 명이나 이용이 정지됐는지 구하는 문제입니다.
function solution(id_list, report, k) {
const answer = Array(id_list.length).fill(0);
const info = {};
for (let id of id_list) { // info 객체 초기화
info[id] = {
reported: 0,
reporters: [],
};
}
for (let data of report) {
const [reporter, reportedPerson] = data.split(' ');
if (!info[reportedPerson].reporters.includes(reporter)) {
// 중복 신고 방지
info[reportedPerson].reported++;
info[reportedPerson].reporters.push(reporter);
}
}
for (let data in info) { // 정지당한 사람 필터링
if (info[data].reported >= k) {
for (let reporter of info[data].reporters) {
answer[id_list.indexOf(reporter)]++;
}
}
}
console.log(answer);
return answer;
}
신고자와 신고 당한 횟수를 저장하는 info 객체를 만들고 모든 데이터를 가공한 뒤 인자에 맞게 필터링하는 코드입니다.
이 문제는 알고리즘 문제를 진지하게 풀어야겠다고 마음 먹고 처음으로 풀었던 문제인데 지금 보니 코드가 아주 지저분합니다.
중복을 제거하는 부분에 Set을 이용하면 조금 더 깔끔해질 것 같습니다.
Author And Source
이 문제에 관하여([Programmers] 92334 신고 결과 받기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ja960508/Programmers-92334-신고-결과-받기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)