1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package programmers;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
 
public class 해시_베스트앨범 {
 
    static class Pair implements Comparable<Pair>{
        String genres;
        int number;
        int plays;
        Pair (String genres, int number, int plays){
            this.genres = genres;
            this.number = number;
            this.plays = plays;
        }
        @Override
        public int compareTo(Pair o) {
            // TODO Auto-generated method stub
            if(this.plays == o.plays)
                return this.number - o.number;
            else
                return o.plays - this.plays;
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] genres = {"classic""pop""classic""classic""pop"};
        int[] plays = {5006001508002500};
        
        HashMap<String, Integer> hm = new HashMap<>();
        for(int i=0; i<genres.length; i++) {
            hm.put(genres[i], 
                    hm.containsKey(genres[i])?
                    hm.get(genres[i])+plays[i] : plays[i]
                    );
        }//end of for loop
        
        HashMap<Integer, String> hm2 = new HashMap<>();
        
        for(String key : hm.keySet()) {
            hm2.put(hm.get(key)*(-1), key);
        }//내림 차순
        
        Object[] temp = hm2.keySet().toArray();
        Arrays.sort(temp);
        ArrayList<Integer> ans = new ArrayList<>();
        for(int z=0; z<temp.length; z++) {
            ArrayList<Pair> al = new ArrayList<>();
            for(int i=0; i<genres.length; i++) {
                if(genres[i] == hm2.get(temp[z])) {
                    al.add(new Pair(hm2.get(temp[z]), i, plays[i]));
                }
            }
            Collections.sort(al);
            if(al.size()>=2) {
                for(int i=0; i<2; i++) ans.add(al.get(i).number); 
            }else {
                ans.add(al.get(0).number);
            }
        }
        int[] ans2 = new int[ans.size()];
        for(int i=0; i<ans.size(); i++)
            ans2[i] = ans.get(i);
        
    }
 
}
 
cs

Java 에는 map 내림차순 기능이 없어서 

Object[] temp = hm2.keySet().toArray();

        Arrays.sort(temp);

로 처리했다. 

 

장르에 플레이수를 합치고 내림차순으로 어떤 장르가 우선적으로 들어갔는지 확인 

해당 장르가 map에 포함되었는지 확인하고 

int[] 배열을 만들어서 출력해줬다. (... 포맷이 int[] 여서 어쩔 수 없이...)