csct3434
[level 3] 베스트앨범 - 42579 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
import java.util.Map.*;
import java.util.stream.Collectors;
class Solution {
public int[] solution(String[] genres, int[] plays) {
HashMap<String, List<int[]>> category = new HashMap<>();
HashMap<String, Integer> count = new HashMap<>();
for (int i = 0; i < genres.length; i++) {
String genre = genres[i];
if (!category.containsKey(genre)) {
category.put(genre, new LinkedList<>());
}
category.get(genre).add(new int[]{i, plays[i]});
count.put(genre, count.getOrDefault(genre, 0) + plays[i]);
}
List<Entry<String, Integer>> countEntries = new LinkedList<>(count.entrySet());
countEntries.sort((a, b) -> b.getValue() - a.getValue());
List<Integer> answer = new LinkedList<>();
for (Entry<String, Integer> entry : countEntries) {
List<int[]> list = category.get(entry.getKey());
list.sort((a, b) -> a[1] == b[1] ? a[0] - b[0] : b[1] - a[1]);
answer.addAll(list.stream().limit(2).map(x -> x[0]).collect(Collectors.toList()));
}
return answer.stream().mapToInt(i -> i).toArray();
}
}
'프로그래머스' 카테고리의 다른 글
[level 3] 이중우선순위큐 - 42628 (0) | 2024.03.17 |
---|---|
[level 3] 디스크 컨트롤러 - 42627 (0) | 2024.03.17 |
[level 2] 시소 짝꿍 - 152996 (0) | 2024.03.07 |
[level 2] 테이블 해시 함수 - 147354 (0) | 2024.03.07 |
[level 2] 교점에 별 만들기 - 87377 (1) | 2024.03.07 |