[알고리즘]백준14425 문자열 집합 -java

kimjingwon·2022년 9월 7일
0
post-custom-banner

문제

생각

10000개이하의 문자열집합 n에 포함된 문자열의 갯수를 찾는문제

포인트는 2가지다

1번
문자열과 문자열을 비교해서 포함된 문자열을 찾기

1번해결
포함된 문자열검색의 경우 저장한문자열.contains(찾고싶은문자)메서드를 쓰면 boolean값으로 포함여부를 알려준다.

2번
문자열포함여부를 빠르게 검색하기

2번해결
list나 배열로 문자열을 저장할 경우 가장느리다. 시간초과가 난다.
이 문제의 경우 저장되는 순서가 상관없고 문자열 탐색만 하기때문에
hashset을 사용해 문자열을 저장했다.

코드

import java.io.*;
import java.util.HashSet;
import java.util.Scanner;

public class baekjoon14425 {

    public static void main(String[]args)throws IOException {


        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int count =0;
        String nm= br.readLine();
        String[] stringsCount=nm.split(" ");

        int n= Integer.valueOf(stringsCount[0]);
        int m= Integer.valueOf(stringsCount[1]);
        HashSet<String> savedSet= new HashSet<>();
        
        for(int i=0;i<n;i++){
            String savedString= br.readLine();
            savedSet.add(savedString);
        }
        for(int i=0;i<m;i++){
            String searchString= br.readLine();
            if(savedSet.contains(searchString)){
                count++;
            }
        }
        bw.append(String.valueOf(count));
        bw.flush();
        bw.close();
    }
}
post-custom-banner

0개의 댓글