프로그래머스 Level 3 - 베스트앨범
📌 문제 설명
📌 생각한 풀이 방법
- 먼저 각 노래 장르에 맞게 총 재생 횟수를 더해 객체에 저장한다.
- 가장 많이 실행된 장르의 노래를 찾는다.
- 해당 장르 중 많이 재생된 index를 answer에 추가한다.
- 2-3을 노래의 장르만큼 반복한다.
📌 풀이
function solution(genres, plays) {
let answer = [];
let totalPlay = {};
for (let i = 0; i < genres.length; i++) {
if (totalPlay[genres[i]]) {
totalPlay[genres[i]] += plays[i];
} else {
totalPlay[genres[i]] = plays[i];
}
}
for (let i = 0; i < Object.keys(totalPlay).length; i++) {
let mostPlayedItem = "";
let mostPlayedCount = Number.MIN_SAFE_INTEGER;
for (let item in totalPlay) {
if (totalPlay[item] > mostPlayedCount) {
mostPlayedItem = item;
mostPlayedCount = totalPlay[item];
}
}
totalPlay[mostPlayedItem] = 0;
for (let i = 0; i < 2; i++) {
let maxPlayed = 0;
let maxPlayedIndex = -1;
let changedMaxPlayed = false;
for (let j = 0; j < genres.length; j++) {
if (genres[j] === mostPlayedItem) {
if (maxPlayed < plays[j]) {
maxPlayed = plays[j];
maxPlayedIndex = j;
changedMaxPlayed = true;
}
}
}
if (changedMaxPlayed) {
answer.push(maxPlayedIndex);
plays[maxPlayedIndex] = -1;
}
}
}
return answer;
}