B1764 듣보잡
날짜 | 2024-03-30 |
사용 언어 | Java |
문제 유형 | 해시를 사용한 집합과 맵, 정렬, 문자열 |
문제 URL | https://www.acmicpc.net/problem/1764 |
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 256 MB | 105962 | 45570 | 35449 | 41.230% |
문제 #
문제 설명 #
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
제한사항 #
-
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다.
-
이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
-
이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다.
-
N, M은 500,000 이하의 자연수이다.
-
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
-
듣보잡의 수와 그 명단을 사전순으로 출력한다.
나의 풀이 #
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int listen = Integer.parseInt(st.nextToken());
int see = Integer.parseInt(st.nextToken());
TreeSet<String> listenSet = new TreeSet<>();
for (int i = 0; i < listen; i++) {
listenSet.add(br.readLine());
}
TreeSet<String> set = new TreeSet<>();
for (int i = 0; i < see; i++) {
String seeName = br.readLine();
if (listenSet.contains(seeName)) {
set.add(seeName);
}
}
br.close();
System.out.println(set.size());
for (String s : set) {
System.out.println(s);
}
}
}
다른 사람의 풀이 #