
문제 설명
https://www.acmicpc.net/problem/2910
풀이과정
입력된 순서대로 맵에 저장하기 위해서 LinkedHashMap을 사용한다. 그리고, Collections.sort()를 사용해서 빈도 수 대로 맵을 정렬했다.
정답코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
Map<Integer, Integer> map = new LinkedHashMap<>();
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
int num = Integer.parseInt(st.nextToken());
map.put(num, map.getOrDefault(num, 0) + 1);
}
List<Integer> list = new ArrayList<>(map.keySet());
Collections.sort(list, (o1, o2) -> map.get(o2) - map.get(o1));
for (int key : list) {
for (int i = 0; i < map.get(key); i++) {
bw.write(key + " ");
}
}
bw.flush();
}
}