저는 해쉬를 이용해서 풀어보았습니다.
import java.util.*;
public class N1764 {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int m = kb.nextInt();
String[] a = new String[n];
String[] b = new String[m];
for (int i = 0; i < n; i++) {
a[i] = kb.next();
}
for (int i = 0; i < m; i++) {
b[i] = kb.next();
}
for (String x : solution(a, b)) {
System.out.println(x);
}
}
public static ArrayList<String> solution(String[] a , String [] b) {
ArrayList<String> answer = new ArrayList<>();
HashMap<String, Integer> mapA = new HashMap<>();
//듣도 못한사람 넣기
for (String x : a) {
mapA.put(x, mapA.getOrDefault(x, 0) + 1);
}
//보도 못한 사람 값 중복체크
for (String x : b) {
mapA.put(x, mapA.getOrDefault(x, 0) -1); // 중복된 String 제거
}
int cnt = 0;
for (String key : mapA.keySet()) {
if (mapA.get(key) == 0) {
answer.add(key);
cnt++; // 갯수세기
}
}
answer.add(String.valueOf(cnt));
Collections.sort(answer); // 정렬
return answer;
}
}