

맨날 StringTokenizer만 써서 풀었는데 일반적으로 split를 이용하는 것 같길래 split을 써서 풀어보았다. 흠 뭐가 더 편한지는 모르겠다 !
이 문제는 N개의 문자열로 이루어진 집합 S가 주어지고, 그 다음 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇개인지 구하는 문제입니다. 앞에서 풀었던 숫자카드 문제의 문자열버전이라고 생각하면 될 것 같습니다.
split 메소드를 사용하여 입력된 문자열을 공백 기준으로 분리하고, 각각 N과 M으로 저장해주었습니다.
contains 메소드를 사용하여 입력으로 주어지는 M개의 문자열이 set에 포함되어 있는지 확인해주었습니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashSet;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
HashSet<String> set = new HashSet<>();
String[] arr = br.readLine().split(" ");
int N = Integer.parseInt(arr[0]);
int M = Integer.parseInt(arr[1]);
for(int i=0; i< N; i++){
set.add(br.readLine());
}
int sum = 0;
for(int j =0; j<M ; j++){
if(set.contains(br.readLine())){
sum ++;
}
}
System.out.println(sum);
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
HashSet<String> set = new HashSet<>();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
for(int i=0; i< N; i++){
set.add(br.readLine());
}
int sum = 0;
for(int j =0; j<M ; j++){
if(set.contains(br.readLine())){
sum ++;
}
}
System.out.println(sum);
}
}
