백준 1764

Jb·2024년 3월 18일

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

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

        //입력값을 받고 n,m으로 파싱해주기
        String[] input = br.readLine().split(" ");
        int n = Integer.parseInt(input[0]);
        int m = Integer.parseInt(input[1]);
        
        Set<String> heard = new HashSet<>();
        for (int i = 0; i < n; i++) {
            heard.add(br.readLine());
        }

        Set<String> seenAndHeard = new HashSet<>();
        for (int i = 0; i < m; i++) {
            String name = br.readLine();
            if (heard.contains(name)) {
                seenAndHeard.add(name);
            }
        }

        // 배열로 변환하고 사전 순으로 정렬
        String[] result = seenAndHeard.toArray(new String[0]);
        Arrays.sort(result);

        System.out.println(seenAndHeard.size());
        for (String name : result) {
            System.out.println(name);
        }
    }
}

생각의 흐름

1.한줄로 입력받아 n,m으로 파싱해주기
2.중복이 불가능하니 맵이 아닌 Set으로 생성하기
3.저장할 set을 생성해주고 비교하여 집어넣기
4.배열로 변환해주고 sort해주기
5.forEach문을 통해 출력

느낀점

자료구조에 대해 공부해보자

0개의 댓글