-
[Baekjoon Online Judge] 1764번: 듣보잡문제 풀이/Baekjoon Online Judge 2021. 1. 20. 20:54
요구사항
- 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어진다.
- 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성한다.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; public class Baekjoon1764 { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); String[] input = bufferedReader.readLine().split(" "); int n = Integer.parseInt(input[0]); // 듣도 못한 사람의 수 int m = Integer.parseInt(input[1]); // 보도 못한 사람의 수 Set<String> personSet = new HashSet<>(); List<String> result = new ArrayList<>(); for (int i = 0; i < n; i++) { personSet.add(bufferedReader.readLine()); } for (int i = 0; i < m; i++) { String person = bufferedReader.readLine(); if (personSet.contains(person)) { result.add(person); } } Collections.sort(result); bufferedWriter.write(result.size() + "\n"); for (String s : result) { bufferedWriter.write(s + "\n"); } bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } }
HashSet을 사용하여 시간 초과를 해결하였다. 사전 순으로 출력해야 하기 때문에 출력 직전에 간단하게 정렬하여 구현하였다.
'문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon Online Judge] 10610번: 30 (0) 2021.01.24 [Baekjoon Online Judge] 4949번: 균형잡힌 세상 (0) 2021.01.23 [Baekjoon Online Judge] 2468번: 안전 영역 (0) 2021.01.20 [Baekjoon Online Judge] 4963번: 섬의 개수 (0) 2021.01.19 [Baekjoon Online Judge] 14502번: 연구소 (0) 2021.01.19