
입력은.. 주어진대로 받으면 되고, 집합 S에 문자열들이 있는지 확인할때 이진탐색을 쓰면 된다. 주의사항은 이진탐색은 정렬된 상태에서 가능한 탐색방법이므로, 정렬 후 이진탐색을 하면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N, M, i, cnt = 0;
String str;
StringTokenizer st;
str = br.readLine();
st = new StringTokenizer(str);
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
// 문자열 집합 S입력받기
String[] S = new String[N];
for (i = 0; i < N; i++) {
S[i] = br.readLine();
}
// S 정렬하기
Arrays.sort(S);
// 검사할 문자열 배열 입력받기
String[] strArr = new String[M];
for (i = 0; i < M; i++) {
strArr[i] = br.readLine();
}
// S에 문자열 있는지 찾기 -> 이진탐색으로
for(i=0;i<M;i++){
if(Arrays.binarySearch(S, strArr[i]) >= 0){
cnt++;}
}
System.out.println(cnt+"");
}
}
너무 졸려가지구.. 자세히 못쓰겠다..
'코딩가딩가' 카테고리의 다른 글
| [JAVA]BOJ 2470, 두 용액 (0) | 2024.07.31 |
|---|---|
| [JAVA]BOJ 2295, 세 수의 합 (0) | 2024.07.29 |
| [JAVA]BOJ 11660, 구간 합 구하기 5 (0) | 2024.07.28 |
| [JAVA]BOJ 1931, 회의실 배정 (0) | 2024.07.28 |
| [JAVA]BOJ 2910, 빈도 정렬 (0) | 2024.07.27 |