티스토리 뷰

728x90

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

 

14425번: 문자열 집합

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

www.acmicpc.net

 

리스트로 받으면 시간초과가 발생하므로 해시셋을 이용해서 풀어야 하는 문제입니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.*;
import java.util.*;
 
public class Main {
    public static void main(String args[]) throws IOException {
        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());
        
        HashSet<String> set = new HashSet<>();
 
        for (int i = 0; i < N; i++) {
            set.add(br.readLine());
        }
 
        int cnt = 0;
        
        for(int i=0; i<M; i++) {
            String s = br.readLine();
            if(set.contains(s)) {
                cnt++;
            }
        }
        
        StringBuilder sb = new StringBuilder();
        sb.append(cnt+"\n");
        
        System.out.println(sb);
        br.close();
    }
}
cs

 

 

'코딩 > 자바 백준' 카테고리의 다른 글

백준 1822 차집합(JAVA)  (0) 2021.08.25
백준 1789 수들의 합 (JAVA)  (0) 2021.08.24
백준 5800 성적 통계(JAVA)  (0) 2021.08.24
백준 1620 나는야 포켓몬 마스터 이다솜(JAVA)  (0) 2021.08.22
백준 6603 로또 (JAVA)  (0) 2021.08.22
댓글