문제 내용은 입력으로 숫자 두개를 받은 뒤, 문자열을 받게 되는데 예제의 경우 5 11 이렇게 받았으니 5개까지는 집합에 속하고 이후 11개는 집합에 속하는지 확인해야 할 문자열인데 집합에 속한 문자열이 몇 개인지 확인해서 출력해주면 끝이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] target = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
HashSet<String> set = new HashSet<>();
for (int i = 0; i < target[0]; i++) {
set.add(br.readLine());
}
int ans = 0;
for (int i = 0; i < target[1]; i++) {
if (set.contains(br.readLine())) {
ans++;
}
}
System.out.println(ans);
}
}
문제를 풀어보자면 처음 입력받은 숫자 중, 왼쪽 값만큼 이후 입력을 받으면서 Set 안에 넣어준 후, 오른쪽 값 만큼 for 문을 돌리면서 해당 값이 Set에 있는지 확인하고, 있으면 갯수를 더해주면서 반복문 끝나고 난 후에는 발견한 횟수를 출력해주면 끝이다
Leave a Reply