import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Frequency_Sort {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
HashMap<Integer,Integer> map = new LinkedHashMap<>();
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
int arr = Integer.parseInt(st.nextToken());
map.put(arr,map.getOrDefault(arr,0)+1);
}
ArrayList<Integer> keylist = new ArrayList<>(map.keySet());
Collections.sort(keylist, new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return Integer.compare(map.get(b), map.get(a));
}
});
for (int i = 0; i < keylist.size(); i++) {
for (int j = 0; j < map.get(keylist.get(i)); j++) {
System.out.print(keylist.get(i)+" ");
}
}
}
}
📢이 문제의 요구사항은 1. 빈도수기준 내림차순 2. 빈도수 같을때, 먼저온 순서대로 정렬이다.
1번 요구사항을 인덱스, 빈도수를 키,값으로 하여 내림차순 정렬하고
2번 요구사항을 개별처리 하는 것으로 설계하는 것이 핵심이다.
컬렉션 내림차순은 항상 볼때마다 막혔었는데 이번계기로 완벽하게 숙지할 수 있도록 해야겠다.