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 M = Integer.parseInt(st.nextToken());
Set<String> notHeard = new HashSet<>();
for(int i = 0; i < N; i++){
notHeard.add(br.readLine());
}
List<String> notSeen = new ArrayList<>();
for(int i = 0; i < M; i++){
String name = br.readLine();
if(notHeard.contains(name)) notSeen.add(name);
}
Collections.sort(notSeen);
StringBuilder sb = new StringBuilder();
sb.append(notSeen.size()).append("\n");
for(String name : notSeen){
sb.append(name).append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
풀이과정 및 리뷰
Set<String> notHeard → 듣도 못한 사람, 비교군으로 사용
List<String> notSeen → 보도 못한 사람
notHeard.contains(name) 으로 포함되는 경우에만 list에 넣음
Collections.sort() 로 사전순 정렬
- 이후
sb.append() 로 정렬된 이름들을 StringBuilder에 더해줌
- 데이터가 500,000만 건 이므로,
BufferedWriter 이용해 한번에 출력