백준 1764 - 자료구조

·2025년 8월 3일
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));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        Set<String> notHeard = new HashSet<>();
        for(int i = 0; i < N; i++){
            notHeard.add(br.readLine());
        }
        List<String> notSeen = new ArrayList<>();
        for(int i = 0; i < M; i++){
            String name = br.readLine();
            if(notHeard.contains(name)) notSeen.add(name);
        }
        Collections.sort(notSeen);
        StringBuilder sb = new StringBuilder();
        sb.append(notSeen.size()).append("\n");
        for(String name : notSeen){
            sb.append(name).append("\n");
        }
        bw.write(sb.toString());
        bw.flush();
        bw.close();
    }
}

풀이과정 및 리뷰

  1. Set<String> notHeard → 듣도 못한 사람, 비교군으로 사용
  2. List<String> notSeen → 보도 못한 사람
  • notHeard.contains(name) 으로 포함되는 경우에만 list에 넣음
  • Collections.sort() 로 사전순 정렬
  • 이후 sb.append() 로 정렬된 이름들을 StringBuilder에 더해줌
  • 데이터가 500,000만 건 이므로, BufferedWriter 이용해 한번에 출력

0개의 댓글