프로그래머스 LEVEL 3(베스트 앨범)
-
사용 언어 : javascript
-
해결 날짜 : 2022-10-20
- 해결 방법 :
- 예전에 c++로 해결했던 문제인데 프로그래머스 실습에 포함되어 있어서 자바스크립트로 풀어봄
- genres를 돌며 장르 별 인덱스: 재생 수 쌍을 value값으로 추가
- 정렬을 위해 array에 담은 후 장르 별 플레이 수에 따라 내림차순으로 장르 정렬
- 정렬된 array를 돌며 장르 속 앨범들을 플레이 수로 내림차순 정렬
- 장르 별 인덱스를 최대 2개가 되도록 push
- 회고 :
- x
-
코드
function solution(genres, plays) { const answer = []; const map = new Map(); for (const [index, genre] of genres.entries()) { map.has(genre) ? map.set(genre, Object.assign(map.get(genre), {[index] : plays[index]})) : map.set(genre, {[index] : plays[index]}) } const arr = [...map]; arr.sort((a, b) => { let a_sum = 0; for (const [key, value] of Object.entries(a[1])) { a_sum += value; } let b_sum = 0; for (const [key, value] of Object.entries(b[1])) { b_sum += value; } return b_sum - a_sum; }); for (const ele of arr) { const array = Object.entries(ele[1]).sort((a, b) => b[1] - a[1]); answer.push(parseInt(array[0][0])); if (array[1]) answer.push(parseInt(array[1][0])); } return answer; }
- 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges