본문 바로가기

Algorithm/Baekjoon

[백준_JAVA_알고리즘] 1764 듣보잡

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException{
    	BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
    	BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
    	StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
    	ArrayList<String> resultName = new ArrayList<>();
    	HashSet<String> firstName = new HashSet<>();
    	
    	int N = Integer.parseInt(stringTokenizer.nextToken());
    	int M = Integer.parseInt(stringTokenizer.nextToken());
    	int count = 0;
    	
    	for(int i = 0; i < N; i++) {
    		firstName.add(bufferedReader.readLine());
    	}
    	
    	for(int i = 0; i < M; i++) {
    		String name = bufferedReader.readLine();
    		if(firstName.contains(name)) {
    			count++;
    			resultName.add(name);
    		}
    	}
    		
    	bufferedWriter.write(count+"\n");
    	Collections.sort(resultName);
    	for(String result: resultName) {
    		bufferedWriter.write(result+"\n");
    	}
    	
    	bufferedWriter.flush();
    	bufferedReader.close();
    	bufferedWriter.close();
    }
}

HashSet

- 중복된 요소를 허용하지 않는다.

- 검색 및 접근 속도가 상대적으로 빠르다.

- 순차적인 접근은 느리다.

 

ArrayList

- 중복된 요소를 허용한다.

- 인덱스를 통한 검색 및 접근 속도가 빠르다.

- 순차적이기 때문에 중간에 요소를 삽입 또는 삭제하는 경우 비효율적이다.