https://www.acmicpc.net/problem/2910
정렬 기준
1. 나온 횟수 > HashMap
2. 나온 횟수가 같다면 먼저 나온 순 > LinkedHashMap, 먼저 등장 순서 보장
코드
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n, c, a[]= new int[1004];
StringTokenizer st = new StringTokenizer(bf.readLine());
n = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
st = new StringTokenizer(bf.readLine());
Map<Integer, Integer> mp = new LinkedHashMap<>();
for(int i=0;i<n;i++) {
a[i]=Integer.parseInt(st.nextToken());
mp.put(a[i],mp.getOrDefault(a[i],0)+1);
}
List<Integer> arr = new ArrayList<>(mp.keySet());
Collections.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return mp.get(o2)- mp.get(o1);
}
});
for(int key : arr) {
for(int i=0;i<mp.get(key);i++) {
bw.write(key+" ");
}
}
bw.flush();
bw.close();
}
}