Skip to content

Commit 567fe84

Browse files
committed
add PROGRAMMERS-42579
1 parent 81b169a commit 567fe84

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
| PROGRAMMERS-17687 | [java](programmers/problem17687) | [n진수 게임 (n-base Game)](https://school.programmers.co.kr/learn/courses/30/lessons/17687) |
2929
| PROGRAMMERS-42577 | [java](programmers/problem42577) | [전화번호 목록 (List of Phone Numbers)](https://school.programmers.co.kr/learn/courses/30/lessons/42577) |
3030
| PROGRAMMERS-42578 | [python](programmers/problem42578) | [의상 (Clothes)](https://school.programmers.co.kr/learn/courses/30/lessons/42578) |
31+
| PROGRAMMERS-42579 | [java](programmers/problem42579) | [베스트앨범 (Best Album)](https://school.programmers.co.kr/learn/courses/30/lessons/42579) |
3132
| PROGRAMMERS-42586 | [java](programmers/problem42586) | [기능개발 (Function Development)](https://school.programmers.co.kr/learn/courses/30/lessons/42586) |
3233
| PROGRAMMERS-42587 | [java](programmers/problem42587) | [프로세스 (Process)](https://school.programmers.co.kr/learn/courses/30/lessons/42587) |
3334
| PROGRAMMERS-42626 | [java](programmers/problem42626) | [더 맵게 (Spicier)](https://school.programmers.co.kr/learn/courses/30/lessons/42626) |
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package problem42579;
2+
3+
import java.util.*;
4+
5+
public class BestAlbum {
6+
public static void main(String[] args) {
7+
var sol = new BestAlbum();
8+
var genres1 = new String[]{"classic", "pop", "classic", "classic", "pop"};
9+
var plays1 = new int[]{500, 600, 150, 800, 2500};
10+
var expected1 = new int[]{4, 1, 3, 0};
11+
var result1 = sol.solution(genres1, plays1);
12+
System.out.println("test1: expected: " + Arrays.toString(expected1) + ", result: " + Arrays.toString(result1));
13+
}
14+
15+
public int[] solution(String[] genres, int[] plays) {
16+
var genrePlays = new HashMap<String, Integer>();
17+
var genreMusic = new HashMap<String, List<HashMap<Integer, Integer>>>();
18+
for (int i = 0; i < genres.length; i++) {
19+
var genre = genres[i];
20+
var play = plays[i];
21+
genrePlays.put(genre, genrePlays.getOrDefault(genre, 0) + play);
22+
23+
var music = new HashMap<Integer, Integer>();
24+
music.put(i, play);
25+
var list = genreMusic.getOrDefault(genre, new ArrayList<>());
26+
list.add(music);
27+
genreMusic.put(genre, list);
28+
}
29+
30+
var genreList = new ArrayList<>(List.of(genrePlays.keySet().toArray(String[]::new)));
31+
genreList.sort((a, b) -> genrePlays.get(b) - genrePlays.get(a));
32+
33+
var answer = new ArrayList<Integer>();
34+
for (var genre : genreList) {
35+
var musicList = genreMusic.get(genre);
36+
musicList.sort((a, b) -> b.values().iterator().next() - a.values().iterator().next());
37+
var count = 0;
38+
for (var music : musicList) {
39+
answer.add(music.keySet().iterator().next());
40+
count++;
41+
if (count == 2) {
42+
break;
43+
}
44+
}
45+
}
46+
return answer.stream().mapToInt(i -> i).toArray();
47+
}
48+
}

0 commit comments

Comments
 (0)