function solution(genres, plays) {
// answer에는 각각의 장르, 재생횟수, 고유번호를 담고
// sumDic에 각 해시 키값마다 재생횟수를 더해서 sort를 위해 저장합니다.
let answer = [];
let sumDic = {};
genres.forEach((el, i)=> {
answer.push({genres: el, count: plays[i], index: i});
if(el in sumDic){
sumDic[el] += plays[i];
}else sumDic[el] = plays[i];
})
// 위에 sumDic에 저장한 카테고리별 재생횟수를 이용하여 sort합니다.
// sort 1 -> 같은 장르가 아니면 카테고리별 재생횟수가 더 많은 쪽을 앞으로 sort합니다.
// sort 2 -> 재생 횟수가 다르면 재생 횟수 별로 내림차순 합니다.
// 만약 다 같은 경우가 있을 시에는 이미 넣은 순서가 index 순 이기 때문에
// 굳이 명시해 줄 필요가 없습니다.
answer.sort((a, b)=>{
if(a.genres !== b.genres) return sumDic[b.genres] - sumDic[a.genres];
if(a.count !== b.count) return b.count - a.count;
});
let count = {};
// count에 장르별로 들어온 횟수를 count해서 2개부터는 filter로 지워버립니다.
// 그 지운 것들을 map을 통해 index들만 return 받아 새로운 배열을 만들고 출력합니다.
return answer.filter((el)=> {
if(count[el.genres] >= 2) return false;
if(el.genres in count) count[el.genres] += 1;
else count[el.genres] = 1;
return true;
}).map(el=> el.index);
}