PS/Baekjoon

[Baekjoon] 1764 - 듣보잡

서현 SEOHYEON 2023. 7. 7. 10:33

📝 문제

 

 

🔑 풀이 과정

이 문제는 듣도 보도 못한 사람의 집합과 보도 못한 사람의 집합 총 2개의 집합의 교집합을 구하는 기본적인 집합 문제이다.

어려운 건 없었고, HashSet을 정렬하려면 List로 변환시킨 후 정렬해야 된다는 것을 알았다.

 

 

 

🔓 답안

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();

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

        Set<String> set1 = new HashSet<>(); //듣도 못한 사람을 넣을 집합
        Set<String> set2 = new HashSet<>(); //보도 못한 사람을 넣을 집합

        //N명의 사람을 집합에 넣음(듣도 못한 사람)
        for(int i = 0; i < N; i++){
            set1.add(br.readLine());
        }

        //M명의 사람을 집합에 넣음(보도 못한 사람)
        for(int i = 0; i < M; i++){
            set2.add(br.readLine());
        }

        //교집합 구하기
        set1.retainAll(set2);

        //정렬
        List<String> result = new ArrayList<>(set1); //정렬을 위해서는 HashSet을 List로 바꿔줘야 한다.
        Collections.sort(result);

        //출력
        sb.append(result.size()).append("\n");
        for(String str: result){
            sb.append(str).append("\n");
        }

        bw.write(sb.toString());
        bw.flush();
        bw.close();

    }
}

 

 

 

🖤 알고리즘 분류

- 자료 구조

- 문자열

- 정렬

- 해시를 사용한 집합과 맵