[백준/JAVA] 1764번

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);
    }
}