https://programmers.co.kr/learn/courses/30/lessons/42579
function solution(genres, plays) {
// 중복을 제외한 장르만 set에 저장
const genresSet = new Set();
genres.map((genre) => genresSet.add(genre));
const arr = [];
// 장르 set을 배열로 변환
[...genresSet].map((genre) => {
let sum = 0; // 장르별 재생된 노래 수의 합
const index = []; // 노래의 index와 재생횟수 저장 배열
genres.map((g, idx) => {
if (g === genre) {
sum += plays[idx];
index.push({'idx': idx, 'times': plays[idx]});
}
});
// 재생횟수가 가장 많은 노래 순으로 정렬
const sortedIndex = index.sort((a, b) => a.times > b.times ? -1 : a.times < b.times ? 1 : 0);
arr.push({'genre': genre, 'sum': sum, 'idx': sortedIndex});
});
// 장르중에서 노래 재생 횟수가 제일 많은 순으로 정렬
const result = arr.sort((a,b) => a.sum > b.sum ? -1 : a.sum < b.sum ? 1 : 0);
const answer = [];
// 장르별
result.map((data) => {
// 노래 횟수
data.idx.map((d, index) => {
// 재생횟수가 높은 순으로 정렬했으므로
// 순서대로 두 개만 선택
if (index < 2) {
answer.push(d.idx);
}
});
});
return answer;
}