728x90
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
듣도 못한 사람의 HashSet 하나와, 보도 못한 사람의 HashSet 하나를 선언하여 각각 값을 추가한다.
듣도 못한 사람 중 보도 못한 사람의 set에도 포함된 경우에 결과를 담을 arrayList에 추가한다.
사전 순으로 출력해야 하기 때문에 sort를 하고 출력한다.
package Silver.s4;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
public class BOJ_1764_듣보잡 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 듣
int M = sc.nextInt(); // 보
HashSet<String> notHear = new HashSet<>();
HashSet<String> notSee = new HashSet<>();
for (int i = 0; i < N; i++)
notHear.add(sc.next());
for (int i = 0; i < M; i++)
notSee.add(sc.next());
ArrayList<String> result = new ArrayList<>();
for (String name : notHear) {
if (notSee.contains(name))
result.add(name);
}
Collections.sort(result);
StringBuilder sb = new StringBuilder();
sb.append(result.size()).append("\n");
for (String name : result)
sb.append(name).append("\n");
System.out.print(sb.toString());
}
}
728x90
'문제 풀이 > BOJ' 카테고리의 다른 글
[백준] 1358 - 하키 (자바/Java) (0) | 2022.08.25 |
---|---|
[백준] 1004 - 어린 왕자 (자바/Java) (0) | 2022.08.25 |
[백준] 10815 - 숫자 카드 (자바/Java) (0) | 2022.08.25 |
[백준] 4256 - 트리 (자바/Java) (1) | 2022.08.25 |
[백준] 1991 - 트리 순회 (0) | 2022.08.24 |