https://www.acmicpc.net/problem/14425

실버4 문제인만큼 그리 어려운 문제는 아니였던거 같다. 우선 N개의 문자열을 입력받고, 이후 입력받는 M개의 문자열과 비교하면 해결할 수 있는 간단한 문제이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
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());
String[] S = new String[N];
int ans = 0;
for (int i = 0; i < N; i++) {
S[i] = br.readLine();
}
for (int i = 0; i < M; i++) {
String check = br.readLine();
for (int j = 0; j < N; j++) {
if (S[j].equals(check)) ans++;
}
}
System.out.println(ans);
}
}
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int ans = 0;
Set<String> set = new HashSet<>();
// N만큼의 문자열 저장
for (int i = 0; i < N; i++) {
set.add(br.readLine());
}
// 뒤의 M개의 문자열과 set을 비교
for (int i = 0; i < M; i++) {
ans = set.contains(br.readLine()) ? ans+1 : ans;
}
HashSet<String> set = new HashSet<>();
// N만큼의 문자열 저장
for (int i = 0; i < N; i++) {
set.add(br.readLine());
}
// 뒤의 M개의 문자열과 set을 비교
for (int i = 0; i < M; i++) {
ans = set.contains(br.readLine()) ? ans+1 : ans;
}

위에서 부터 순서대로
채점 번호 : 69546631 - 방법 3
채점 번호 : 69546487 - 방법 2
채점 번호 : 69546205 - 방법 1
확실히.. 로직을 어떻게 구성하느냐에 따라 성능 차이가 조금 난다. 이런걸 느낄 때마다 기본을 다지는게 중요하지 않나 싶달까