김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
첫째 줄에 듣도 못한 사람의 수 , 보도 못한 사람의 수 이 주어진다. 이어서 둘째 줄부터 개의 줄에 걸쳐 듣도 못한 사람의 이름과, 째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. , 은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
듣보잡의 수와 그 명단을 사전순으로 출력한다.
Collections.sort()
함수 사용해 정렬public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] split = in.readLine().split(" ");
int n = Integer.parseInt(split[0]); // 듣도 못한 사람 수
int m = Integer.parseInt(split[1]); // 보도 못한 사람 수
HashMap<String, Integer> names = new HashMap<String, Integer>();
for (int i = 0; i < n + m; i++) {
String sp = in.readLine();
// {이름 : 해당 이름 수} 로 초기화
names.put(sp, names.getOrDefault(sp, 0) + 1);
}
int ans = 0;
List<String> ansName = new ArrayList<>();
for (String name : names.keySet()) {
if (names.get(name) > 1) { // 2번 이상 불린 이름이 듣도보도 못한 사람
ansName.add(name);
ans++;
}
}
// list에 넣어 sort 함수 사용
Collections.sort(ansName);
System.out.println(ans);
for (String name : ansName) {
System.out.println(name);
}
}
}