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

 

14425번: 문자열 집합

첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.  다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어

www.acmicpc.net

코드설명

HashSet(해시셋) 를 활용합니다.

HashSet를 사용하여 중복을 허용하지 않는 집합을 구현합니다. 매우 빠른 검색 속도를 제공하여 많은 데이터를 처리할 때 유용합니다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main {
public static int N, M;
public static HashSet<String> hashset = new HashSet<String>();
public static int answer = 0;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
//HashSet<String>으로 하면끝.
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
String str = st.nextToken();
hashset.add(str);
}
for(int i=0;i<M;i++) {
st = new StringTokenizer(br.readLine());
String str = st.nextToken();
if(hashset.contains(str) == true) {
answer += 1;
}
}
System.out.println(answer);
}
}

+ Recent posts