백준/JAVA

[백준/JAVA] 1764번 듣보잡

누룽지맛치킨 2023. 2. 14. 15:55

1. 문제

김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.

2. 문제 접근

1) 듣도 못한 사람의 수 N과 보도 못한 사람의 수 M을 입력받는다.
2) 듣도 못한 사람과 보도 못한 사람을 입력받는다.
3) 듣도 못한 사람을 입력받을 때 이를 HashSet에 저장한다.
4) 보도 못한 사람을 입력받을 때 HashSet에 존재하면 이를 ArrayList에 저장한다.
5) ArrayList를 정렬한다.
6) 지정된 출력형식으로 출력한다.

3. 코드

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.StringTokenizer;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.Comparator;

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());
        StringBuilder sb = new StringBuilder();

        int result = 0;

        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());


        HashSet<String> hash = new HashSet<>();
        ArrayList<String> answer = new ArrayList<>();

        for(int i=0;i<N;i++) {
            hash.add(br.readLine());
        }
        for(int i=0;i<M;i++) {
            String input = br.readLine();
            if(hash.contains(input)){
                result++;
                answer.add(input);
            }
        }
        answer.sort(Comparator.naturalOrder());
        sb.append(result).append("\n");
        for(int i=0;i<answer.size();i++)
        {
            sb.append(answer.get(i)).append("\n");
        }
        System.out.print(sb);
    }
}