[백준] 1764번 듣보잡 java

쓰리원·2022년 3월 11일
0

코딩테스트

목록 보기
14/28
post-thumbnail

1. 백준 1764번 문제

1. 문제

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

2. 입력

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

듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.

3. 출력

듣보잡의 수와 그 명단을 사전순으로 출력한다.

2. 문제 해석

두 집합이 있으면 일치하는 target을 반환하는 문제입니다.

3. 문제 풀이

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bf.readLine());

        int N = Integer.parseInt(st.nextToken());	// 듣도 못한 사람의 수
        int M = Integer.parseInt(st.nextToken());	// 보도 못한 사람의 수

        Set<String> hs = new HashSet<>();	// 듣도 못한 사람을 HashSet 으로 저장
        List<String> list = new ArrayList<>(); //나중에 보도 못한 사람과 일치하면 리스트에 담는다

        for(int i=0; i<N; i++)
            hs.add(bf.readLine());	// 듣도 못한 사람 저장

        for(int i=0; i<M; i++) {
            String str = bf.readLine();
            if(hs.contains(str)) { // 보도 못한 사람이 듣도 못한 사람에 있으면 list에 저장
                list.add(str);
            }
        }
        Collections.sort(list); //오름차순으로 정렬을 해줍니다.
        System.out.println(list.size()); //배열이 크기를 반환합니다.
        
        for(int i = 0; i < list.size(); i++)
            System.out.println(list.get(i));
        bf.close();
    }
}

출력 결과

3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton

2
baesangwook
ohhenrie
profile
가장 아름다운 정답은 서로의 협업안에 있다.

0개의 댓글