자료구조&알고리즘/백준
1764번: 듣보잡 [JAVA]
yong_ღ'ᴗ'ღ
2023. 7. 16. 21:20
https://www.acmicpc.net/problem/1764
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
문제) 듣도 못한 사람 ∩ 보도 못한 사람
접근방식)
1. HashMap 사용해서 Key 이름, Value에는 언급된 횟수를 넣음
2. HashMap 돌면서 value값 2 이상인 거 names 리스트에 추가
3. 사전순으로 출력해야 하므로, names 리스트 정렬
4. StringBuilder에 list 의 size와 이름들 순서대로 append한 뒤에 출력
package codingTestStudy.week1;
import java.io.*;
import java.util.*;
public class B_1764 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// 듣도 못한 사람 ∩ 보도 못한 사람
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < N + M; i++) {
String name = br.readLine();
map.put(name, map.getOrDefault(name, 0) + 1);
}
// map 돌면서, 개수가 2인 거 찾아서 names 리스트에 추가
List<String> names = new ArrayList<>();
for (String key : map.keySet()) {
if (map.get(key) >= 2)
names.add(key);
}
// 사전순으로 출력 → names 리스트 정렬
Collections.sort(names);
// 결과 출력
StringBuilder sb = new StringBuilder();
sb.append(names.size()).append('\n');
for (String name : names)
sb.append(name).append('\n');
System.out.print(sb);
}
}