https://www.acmicpc.net/problem/1764
ArrayList에 넣어서 contains으로 파악할려했더니 시간초과가 발생하였다.
따라서 HashMap을 이용하여 value가 2인지 확인해줘야 하는 문제였다.
for(int i = 0; i < N + M; i++)
으로 한번에 입력받는다. N과 M을 나눠서 받았더니 그러면 name별로 count가 어렵기 때문에 한번에 입력받고, 이를 2가 되면 answerList에넣어주는 것으로 확인한다.
import java.util.*;
import java.io.*;
public class Main{
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
Map<String, Integer> map = new HashMap<>();
ArrayList<String> answerList = new ArrayList<>();
for(int i = 0; i < N + M; i++){
String name = br.readLine();
map.put(name, map.getOrDefault(name, 0) + 1);
if(map.get(name) == 2){
answerList.add(name);
}
}
Collections.sort(answerList);
System.out.println(answerList.size());
for(int i = 0; i < answerList.size(); i++){
System.out.println(answerList.get(i));
}
}
}