From b11641198658c3b691057ad8ecbca9d53d8a041f Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Fri, 30 Dec 2022 04:40:46 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202022.=2012.=2030.=20=EC=98=A4?= =?UTF-8?q?=EC=A0=84=204:40:46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/베스트앨범/solution.java | 49 ++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 programmers/베스트앨범/solution.java diff --git a/programmers/베스트앨범/solution.java b/programmers/베스트앨범/solution.java new file mode 100644 index 0000000..fcbea3d --- /dev/null +++ b/programmers/베스트앨범/solution.java @@ -0,0 +1,49 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/42579 + +import java.util.*; +class Solution { + public class Song{ + private int id; + private int plays; + public Song(){} + public Song(int id, int plays){ + this.id = id; + this.plays = plays; + } + public int getId(){ + return id; + } + public int getPlays(){ + return plays; + } + public String toString() { + return "Song "+id+" plays"+plays; + } + } + public int[] solution(String[] genres, int[] plays) { + HashMap hm = new HashMap<>(); + HashMap> hm2 = new HashMap<>(); + for(int a = 0; a < genres.length; a++){ + ArrayList al = new ArrayList<>(); + hm.put(genres[a],(Integer)(hm.getOrDefault(genres[a],0)+(Integer)plays[a])); + al = hm2.getOrDefault(genres[a], al); + al.add(new Song(a,plays[a])); + hm2.put(genres[a], al); + } + List answer = new ArrayList<>(); + List> entryList = new LinkedList<>(hm.entrySet()); + entryList.sort(((o1, o2) -> hm.get(o2.getKey()) - hm.get(o1.getKey()))); + for(Map.Entry entry : entryList){ + System.out.println("key : " + entry.getKey() + ", value : " + entry.getValue()); + ArrayList al = hm2.get(entry.getKey()); + al.sort(((o1, o2) -> o2.getPlays() - o1.getPlays())); + int idx = 0; + for(Song s : al){ + if(idx++>1) break; + answer.add(s.getId()); + System.out.println(s); + } + } + return answer.stream().mapToInt(Integer::intValue).toArray(); + } +} \ No newline at end of file