본문 바로가기
알고리즘 문제풀이/백준

[백준 1764] 듣보잡(JAVA)

by 소보루:-) 2020. 3. 3.

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

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.

www.acmicpc.net

 

HashSet에 듣도 못한 사람을 넣어 놓고, 보도 못한 사람을 입력 받아 HashSet에 들어 있는 사람이면 ans에 넣어주었다.

사전순으로 출력하기 위해 sort한 다음 답을 출력했다.

 

 

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

public class Main {

	public static int N,M;
	public static HashSet<String> hs=new HashSet<String>();
	public static ArrayList<String> ans = new ArrayList<String>();
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		for(int i=0; i<N; i++) {
			//arr1[i]=br.readLine();
			hs.add(br.readLine());
		}
		for(int i=0; i<M; i++) {
			String s=br.readLine();
			if(hs.contains(s)) {
				ans.add(s);
			}
			
		}
		Collections.sort(ans);
		System.out.println(ans.size());
		for(int i=0; i<ans.size(); i++) {
			System.out.println(ans.get(i));
		}

	}

}

댓글