듣도 못한 사람 리스트와 보도 못한 사람 리스트에 중복으로 존재하는 이름을 찾는 문제.
해시 Set을 사용하여 해결할 수 있다.
듣도 못한 사람을 중복없이 저장하기 위해 Set< String> set에 저장한다.
보도 못한 사람 중 set에 저장되어있는 이름이 있다면 듣도 보도 못한 사람이다.
듣도 보도 못한 사람을 찾았다면 사전순으로 출력하기 위해 오름차순 정렬.
public class 듣보잡 {
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> set = new LinkedHashSet<>();
//듣도 못한 사람
for(int i=0;i<N;i++){
set.add(br.readLine());
}
List<String> list = new ArrayList<>();
//보도 못한 사람
for(int i=0;i<M;i++){
String see = br.readLine();
//듣도 못한 사람과 겹치는 이름이라면 듣도 보도 못한 이름.
if(set.contains(see)) list.add(see);
}
//사전순 출력을 위한 오름차순 정렬
Collections.sort(list);
StringBuilder sb = new StringBuilder();
sb.append(list.size());
sb.append("\n");
for(int i=0;i<list.size();i++){
sb.append(list.get(i));
sb.append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}