프로그래머스[Level 3] 베스트앨범(해시)

bkboy·2022년 6월 10일
0

문제

제한 사항

입출력 예

풀이

function solution(genres, plays) {
  let answer = [];
  const songs = [];
  const genreSumHash = {}; // 장르와 총 플레이타임이 저장된 객체
  const genreSumArr = []; // 장르와 총 플레이타임이 저장된 배열

  genres.forEach((genre, id) => {
    songs.push({ id: id, genre: genre, play: plays[id] }); // 인덱스, 장르, 플레이타임을 담은 songs
    genreSumHash[genre] =
      genreSumHash[genre] === undefined
        ? plays[id]
        : genreSumHash[genre] + plays[id];
  });

  for (const key in genreSumHash) {
    genreSumArr.push([key, genreSumHash[key]]);
  }
  genreSumArr.sort((a, b) => b[1] - a[1]);
  console.log(genreSumArr);
  for (const arr of genreSumArr) {
    const sorted = songs
      .filter((song) => song.genre === arr[0])
      .sort((a, b) => b.play - a.play);
    for (let i = 0; i < 2 && i < sorted.length; i++) {
      answer.push(sorted[i].id);
    }
  }

  return answer;
}
  • 조금 복잡한 문제이다. 원리는 코드를 읽어보면 쉽게 이해가 갈 것이다.
  • 객체를 잘 다뤄야겠다.
profile
음악하는 개발자

0개의 댓글