https://www.acmicpc.net/problem/1764
HashSet으로 값을 추가한 후, contains를 사용하여 중복값을 확인.
이후 중복값은 PriorityQueue를 통해 출력하였음.
Class에 Comparator를 굳이 달 필요는 없었다.
import java.util.*;
import java.io.*;
public class Main {
static int N, M;
static HashSet<String> hs = new HashSet<>();
static PriorityQueue<String> pq = new PriorityQueue<>();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
for(int i = 0; i < N; i++) {
hs.add(br.readLine());
}
for(int i = 0; i < M; i++) {
StringBuilder now = new StringBuilder(br.readLine());
if(hs.contains(now.toString())) pq.offer(now.toString());
}
//출력
bw.write(pq.size() + "\n");
while (!pq.isEmpty()) {
bw.write(pq.poll() + "\n");
}
bw.close();
}
}