Skip to content

Commit 34087dc

Browse files
authored
[BOJ] 2910 빈도 정렬 (S3)
1 parent 4698dc2 commit 34087dc

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

정건우/9주차/260225.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
//https://www.acmicpc.net/problem/2910
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.*;
6+
7+
public class BOJ_S3_2910_빈도정렬 {
8+
public static void main(String[] args) throws IOException {
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
StringTokenizer st = new StringTokenizer(br.readLine());
11+
12+
int N = Integer.parseInt(st.nextToken());
13+
int C = Integer.parseInt(st.nextToken());
14+
15+
Map<Integer, Integer> indexMap = new HashMap<>();
16+
Map<Integer, Integer> countMap = new HashMap<>();
17+
18+
st = new StringTokenizer(br.readLine());
19+
for (int i = 0; i < N; i++) {
20+
int n = Integer.parseInt(st.nextToken());
21+
22+
if(!indexMap.containsKey(n)) {
23+
indexMap.put(n, i);
24+
countMap.put(n, 0);
25+
}
26+
27+
countMap.put(n, countMap.get(n) + 1);
28+
}
29+
30+
List<Integer> list = new ArrayList<>(indexMap.keySet());
31+
Collections.sort(list, (o1, o2) -> {
32+
if(countMap.get(o1) != countMap.get(o2)) {
33+
return countMap.get(o2) - countMap.get(o1);
34+
} else {
35+
return indexMap.get(o1) - indexMap.get(o2);
36+
}
37+
});
38+
39+
StringBuilder sb = new StringBuilder();
40+
41+
for (int n : list) {
42+
for (int i = 0; i < countMap.get(n); i++) {
43+
sb.append(n).append(' ');
44+
}
45+
}
46+
47+
sb.setLength(sb.length()-1);
48+
System.out.println(sb.toString());
49+
50+
}
51+
}

0 commit comments

Comments
 (0)