[プログラマー]ベストアルバム-javascript
📌 質問する
https://programmers.co.kr/learn/courses/30/lessons/42579
📌 に答える
function solution(genres, plays) {
var answer = [];
let sum_play = new Map();
let play_index = new Map();
for (let i = 0; i < genres.length; i++) {
sum_play.set(genres[i], (sum_play.get(genres[i]) || 0) + plays[i]);
play_index.set([plays[i], i], genres[i]);
}
const sum_play_sort = new Map(
[...sum_play.entries()].sort((a, b) => b[1] - a[1])
);
const play_index_sort = new Map(
[...play_index.entries()].sort((a, b) => b[0][0] - a[0][0])
);
for (let [k, v] of sum_play_sort) {
let cnt = 0;
for (let [k2, v2] of play_index_sort) {
if (v2 === k) {
answer.push(k2[1]);
cnt++;
if (cnt === 2) break;
}
}
}
return answer;
}
console.log(
solution(
["classic", "pop", "classic", "classic", "pop"],
[500, 600, 150, 800, 2500]
)
);
✔sum play:[タイプ名、そのタイプのplay数の和]を格納するmap✔play index:[(play su,index)タイプ名]を格納するmap
✔sum play sort:sum play valueの降順ソート
プレイindexをプレイ数とする降順ソート
✔sum play sort、sum play sortのキー値がplay index sortの値と同じであればans配列でplayのカウントが高い順2になるまでpushします.
✔難易度:プログラマー標準LEVEL 3
Reference
この問題について([プログラマー]ベストアルバム-javascript), 我々は、より多くの情報をここで見つけました https://velog.io/@ywc8851/프로그래머스-베스트앨범-JSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol