diff --git "a/zinnnn37/202511/13 PGM LV3 \353\262\240\354\212\244\355\212\270\354\227\230\353\262\224.md" "b/zinnnn37/202511/13 PGM LV3 \353\262\240\354\212\244\355\212\270\354\227\230\353\262\224.md" new file mode 100644 index 00000000..d17e3992 --- /dev/null +++ "b/zinnnn37/202511/13 PGM LV3 \353\262\240\354\212\244\355\212\270\354\227\230\353\262\224.md" @@ -0,0 +1,55 @@ +```java +import java.util.*; + +public class PGM_LV2_베스트엘범 { + + private static int len; + + private static Map> order; + private static Map cnt; + + private static class Node implements Comparable { + int id; + int cnt; + + Node(int id, int cnt) { + this.id = id; + this.cnt = cnt; + } + + @Override + public int compareTo(Node o) { + return Integer.compare(o.cnt, this.cnt); + } + } + + public int[] solution(String[] genres, int[] plays) { + len = genres.length; + + order = new HashMap<>(); + cnt = new TreeMap<>(Collections.reverseOrder()); + + for (int i = 0; i < genres.length; i++) { + cnt.put(genres[i], cnt.getOrDefault(genres[i], 0) + plays[i]); + + order.putIfAbsent(genres[i], new PriorityQueue<>()); + order.get(genres[i]).offer(new Node(i, plays[i])); + } + + List sortedGenres = new ArrayList<>(order.keySet()); + sortedGenres.sort((a, b) -> Integer.compare(cnt.get(b), cnt.get(a))); + + List res = new ArrayList<>(); + + for (String genre : sortedGenres) { + Queue pq = order.get(genre); + + for (int i = 0; i < 2 && !pq.isEmpty(); i++) { + res.add(pq.poll().id); + } + } + + return res.stream().mapToInt(i -> i).toArray(); + } +} +``` \ No newline at end of file