java
백준 14425 문자열 집합 java 자바
MiaCoder
2024. 1. 23. 10:17
이 문제는 해시맵을 사용해서 풀이하면 편리하다.
처름에는 N번째 행까지, M번째 행까지 별도의 HashMap에 넣고 직접 비교를 하려고 했으나.
containKey라는 좋은 매소드를 활용하면 입력과 동시에 비교를 하고 카운트를 할 수 있는 점을 발견했다.
import java.util.StringTokenizer;
import java.util.HashMap;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
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());
// 공백을 통해 입력받기 위해 Stringtokenizer 사용
int count = 0;
// 중복되는 값을 카운트
HashMap<String, Integer> map1 = new HashMap<>();
//해시맵 선언
for (int i = 0; i < N; i++) {
map1.put(br.readLine(), 0);
}
//해시맵에 입력값 넣기
for (int i = 0; i < M; i++) {
if (map1.containsKey(br.readLine())) {
count++;
}
}
// M번째 입력을 받기 시작하면서는 별도의 HashMap에 저장하지 않고
//바로바로 비교를 통해 count를 하는 것이 좀 더 빠르다.
System.out.print(count);
br.close();
}
}