-
문제
https://programmers.co.kr/learn/courses/30/lessons/42579
How to Solve ?
[1] Hash
이 문제의 가장 중요한 핵심은 "배열과 객체를 잘 다룰 수 있는가?" 인 것 같다.
객체 안에 필요한 배열을 담아서 처리하고, 만든 객체를 배열로 전환하여 정렬 할 수 있는 힘이 있다면 문제에 어려움을 겪지 않았을 것이라 생각한다.
[ 하지만, 나에게는 어려움을 주었던 문제.. ]
function solution(genres, plays) { const answer = []; const playCountArr = []; const songs = {}; const playCount = {}; for (let i = 0; i < genres.length; i++) { if (!songs[genres[i]]) songs[genres[i]] = []; const info = { genre: genres[i], play: plays[i], index: i, }; songs[genres[i]].push(info); playCount[genres[i]] = (playCount[genres[i]] || 0) + plays[i]; } for (let key in playCount) { playCountArr.push({ genre: key, count: playCount[key], }); } playCountArr.sort((a, b) => b.count - a.count); playCountArr.forEach((ele) => { const targetGenre = songs[ele.genre]; targetGenre.sort((a, b) => b.play - a.play); targetGenre[0] && answer.push(targetGenre[0].index); targetGenre[1] && answer.push(targetGenre[1].index); }); return answer; } let genres = ["classic", "pop", "classic", "classic", "pop"]; let plays = [500, 600, 150, 800, 2500]; console.log(solution(genres, plays));
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스_Lv3] 네트워크 ( by using JavaScript ) (0) 2021.05.28 [프로그래머스_Lv2] H-index ( by using JavaScript ) (0) 2021.05.25 [프로그래머스_Lv 3] 네트워크 ( by using JavaScript ) (0) 2021.05.23 [프로그래머스_Lv1] 약수의 개수와 덧셈 ( by using JavaScript ) (0) 2021.05.23 [프로그래머스_Lv2 ] 메뉴 리뉴얼 ( by using JavaScript ) (0) 2021.05.23 댓글