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