문제 해석
- 이 문제는 N개의 문자열과 M개의 문자열이 주어지는데, N은 집합 S의 개수이고, M은 비교할 대상의 문자열들이다.
- 쉽게 말하면, M개의 문자열이 주어지는데 집합 S의 문자열(개수 : N개)에 M개의 문자열이 몇개 속하는지 개수를 구하면 되는 것!
- 예시를 들면 아래와 같다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
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());
Set<String> array = new HashSet<>();
for(int i = 0; i < N; i++) {
array.add(br.readLine());
}
int count = 0;
for(int i = 0; i < M; i++) {
String str = br.readLine();
if(array.contains(str)) {
count++;
}
}
br.close();
System.out.println(count);
}
}
- 코드에 대한 설명은 주석으로 달아두었다.
- HashSet만 사용하면, 간단히 풀리는 문제이다.
결과
느낀 점
- 처음에 이 문제를 접했을 때 문제 해석에 어려움이 있었다.
- 문제를 제대로 안 읽어서 어려웠는데, 집합 S가 앞부분인지 뒷부분인지 몰라서 헤맸다...
- 알고보면(이해하면) 꽤 간단히 풀리는 문제여서 어려움은 없었다.