본문으로 바로가기

백준 14425번 (JAVA) 문자열 집합

category 알고리즘/백준 2021. 4. 21. 08:41

트라이알고리즘을 사용해서도 풀 수 있는 문제이지만, 해시를 사용하여 푸는 것이 더 간단해보여서 그러한 풀이방식으로 접근했다.

 

1. 검사해야할 문자열을 HashSet에 넣는다

2. 이후에 나오는 문자열들을 contains를 통해서 비교한다.

3. true가 나온 횟수만큼 카운팅하여 그 수를 리턴한다.

 

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 BOJ_14425_문자열집합 {

	static Set<String> p = new HashSet<>();

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuffer sb = new StringBuffer();
		StringTokenizer st = new StringTokenizer(br.readLine());
		int cnt = 0;
		int N = stoi(st.nextToken());
		int M = stoi(st.nextToken());
		for (int i = 0; i < N; i++) {
			p.add(br.readLine());
		}
		for (int i = 0; i < M; i++) {
			if (p.contains(br.readLine())) {
				cnt++;
			}
		}
		System.out.println(cnt);

	}

	private static int stoi(String s) {
		return Integer.parseInt(s);
	}
}