알고리즘80 :: 프로그래머스_베스트앨범
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 = {500, 600, 150, 800, 2500};
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[] 여서 어쩔 수 없이...)
'알고리즘' 카테고리의 다른 글
알고리즘82 :: 프로그래머스_섬연결하기(MST, 크루스칼) (0) | 2020.04.23 |
---|---|
알고리즘81 :: BOJ_18809_Gaaaaaaaaaarden(작성중) (0) | 2020.04.21 |
알고리즘79 :: BOJ_2503_숫자야구 (0) | 2020.04.11 |
알고리즘78 :: SWEA_원자 소멸 시뮬레이션(작성중) (0) | 2020.04.09 |
알고리즘77 :: 이분탐색이란? BOJ_13702에 적용 (0) | 2020.03.18 |
댓글
이 글 공유하기
다른 글
-
알고리즘82 :: 프로그래머스_섬연결하기(MST, 크루스칼)
알고리즘82 :: 프로그래머스_섬연결하기(MST, 크루스칼)
2020.04.23 -
알고리즘81 :: BOJ_18809_Gaaaaaaaaaarden(작성중)
알고리즘81 :: BOJ_18809_Gaaaaaaaaaarden(작성중)
2020.04.21 -
알고리즘79 :: BOJ_2503_숫자야구
알고리즘79 :: BOJ_2503_숫자야구
2020.04.11 -
알고리즘78 :: SWEA_원자 소멸 시뮬레이션(작성중)
알고리즘78 :: SWEA_원자 소멸 시뮬레이션(작성중)
2020.04.09