https://school.programmers.co.kr/learn/courses/30/lessons/42579
import java.util.*;
class Solution {
public int[] solution(String[] genres, int[] plays) {
// 1. 장르별 총 재생 횟수를 구할 HashMap
HashMap<String, Integer> genrePlayCount = new HashMap<>();
// 2. 각 장르에 속한 곡들 (곡 인덱스와 재생 횟수)
HashMap<String, List<int[]>> genreSongs = new HashMap<>();
// 장르별 총 재생 횟수와 장르별 노래 목록 구하기
for (int i = 0; i < genres.length; i++) {
genrePlayCount.put(genres[i], genrePlayCount.getOrDefault(genres[i], 0) + plays[i]);
genreSongs.putIfAbsent(genres[i], new ArrayList<>());
genreSongs.get(genres[i]).add(new int[]{i, plays[i]});
}
// 3. 장르별로 총 재생 횟수가 많은 순으로 장르 정렬
List<String> sortedGenres = new ArrayList<>(genrePlayCount.keySet());
sortedGenres.sort((a, b) -> genrePlayCount.get(b) - genrePlayCount.get(a)); // 내림차순 정렬
List<Integer> result = new ArrayList<>();
// 4. 각 장르에 대해 노래를 재생 횟수 내림차순으로 정렬 후 최대 두 곡 선택
for (String genre : sortedGenres) {
List<int[]> songs = genreSongs.get(genre);
songs.sort((a, b) -> b[1] - a[1]); // 재생 횟수 내림차순 정렬
// 최대 두 곡만 추가
for (int i = 0; i < Math.min(songs.size(), 2); i++) {
result.add(songs.get(i)[0]); // 노래의 인덱스를 결과 리스트에 추가
}
}
// 결과를 배열로 변환하여 반환
return result.stream().mapToInt(i -> i).toArray();
}
}
코테 전 공부할 시간이 촉박해서 일단 공부 용도로 chatgpt에서 가져온 답변,,
장르별 총 재생횟수까지는 구했는데 그 이후에서 막혔다 🥹
HashMap<String, List<int[]>> genreSongs = new HashMap<>(); 이렇게 HashMap은 한 번도 안 써봐서 공부 용도로 일단 기록해놓기.