[프로그래머스] 베스트 앨범

minkyung·2023년 11월 20일
0

알고리즘 문제 풀기

목록 보기
10/11
post-thumbnail

brute force

합계: 86.7 / 100.0

function solution(genres, plays) {
  var answer = [];
  const map = new Map();
  let object = {};

  for (let i = 0; i < genres.length; i++) {
    map.set(plays[i], i)
    if (object[genres[i]]) {
      object[genres[i]].push(plays[i])
    } else object[genres[i]] = [plays[i]]
  }

  const 장르순위 = 인기장르찾기(object)

  // 장르순위 array 돌면서, object의 value 값을 map에서 찾아서 push
  for (let i = 0; i < 장르순위.length; i++) {
    object[장르순위[i]].sort((a, b) => b - a)
    object[장르순위[i]].map((item, index) => {
      if (index < 2) {
        answer.push(map.get(item))
      } else return
    })
  }
  return answer;
}

const 인기장르찾기 = (object) => {
  let obj = {}
  for (let key in object) {
    object[key].reduce((acc, cur) => {
      return obj[key] = acc + cur
    }, 0)
  }

  // 객체의 값들을 배열로 변환
  const arr = Object.entries(obj);

  // 값만 추출하여 정렬
  arr.sort((a, b) => b[1] - a[1]);

  // 정렬된 배열을 다시 객체로 변환
  const sortedObj = Object.fromEntries(arr);
  return Object.keys(sortedObj)
}



console.log(solution(["classic", "pop", "classic", "classic", "pop"], [500, 600, 150, 800, 2500]))

profile
프론트엔드 개발자

0개의 댓글