function solution(genres, plays) {
// 전부 다 담기
const stack = []
for (let i = 0; i < genres.length; i++) {
stack.push({genre: genres[i], score: plays[i], id: i})
}
// 장르만 담기
const setOne = []
for (let i = 0; i < genres.length; i++) {
if (setOne.includes(genres[i])) {
continue
} else {
setOne.push(genres[i])
}
}
// 각 합 구하기
const setTwo = []
for (let i = 0; i < setOne.length; i++) {
const sumOfValue = stack.map((item, index) => {
if (item.genre === setOne[i]) {
return item.score
} else {
return 0
}
}).reduce((a, b) => a + b, 0)
setTwo.push({genre: setOne[i], sumOfValue})
}
// 순서 구하기
const setThree = setTwo.sort((a, b) => b.sumOfValue - a.sumOfValue)
.map((item) => item.genre)
// 순서대로 id 삽입하기
const answer = []
setThree.forEach((item, index) => {
const sliceElement = stack.filter((el) => el.genre === item)
.sort((a, b) => b.score - a.score)
.slice(0, 2)
.map(item => item.id)
answer.push(...sliceElement)
})
return answer
}
=> 어떤 앨범이 가장 합이 높은지 순서를 구해야 했다. 그 순서를 구한 다음 처음 index를 반환해야 한다. 처음에 생각은 했는데, 그냥 구현체나 자료형 고민을 좀 많이 했던 거 같다. Map써도 될 거 같다는 생각??