[백준] 1764번 - 듣보잡 [Java][C++]
[백준] 1764번 - 듣보잡 [Java][C++]
1. 문제 풀이
듣도 못한 사람의 명단과 보도 못한 사람의 명단에 모두 포함된 사람의 명단을 사전 순으로 출력하는 문제로 두 집합의 교집합을 구하면 되는 간단한 문제다.
2. 코드
1. 집합과 맵 [Java]
듣도 못한 사람은 TreeSet 으로 보도 못한 사람은 HashSet 으로 저장한 후 retainAll 메서드로 두 집합의 교집합을 구했다. TreeSet 은 이미 정렬된 채로 저장하기 때문에 순회하면서 출력만 해주면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
Set<String> set1 = new TreeSet<>();
for (int i = 0; i < N; i++) {
set1.add(br.readLine());
}
Set<String> set2 = new HashSet<>();
for (int i = 0; i < M; i++) {
set2.add(br.readLine());
}
set1.retainAll(set2);
sb.append(set1.size()).append("\n");
for (String str : set1) {
sb.append(str).append("\n");
}
System.out.println(sb);
}
}
2. 집합과 맵 [C++]
set 으로 교집합을 선언하고 한 쪽 집합을 순회하면서 해당 원소가 반대쪽 집합에도 포함되어 있으면 교집합에 넣어주는 방식으로 구현했다. 이때 성능은 순회를 하는 쪽이 좌우하므로 더 작은 집합을 순회하도록 swap 을 활용했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
unordered_set<string> st1;
for (int i = 0; i < n; i++) {
string s;
cin >> s;
st1.insert(s);
}
unordered_set<string> st2;
for (int i = 0; i < m; i++) {
string s;
cin >> s;
st2.insert(s);
}
set<string> inter;
if (st1.size() > st2.size()) swap(st1, st2);
for (const string& s : st1) {
if (st2.count(s)) inter.insert(s);
}
cout << inter.size() << '\n';
for (const string& s : inter) {
cout << s << '\n';
}
}
3. 풀이 정보
1. 집합과 맵 [Java]
| 언어 | 시간 | 메모리 | 코드 길이 |
|---|---|---|---|
| Java 11 | 356 ms | 28772 KB | 882 B |
2. 집합과 맵 [C++]
| 언어 | 시간 | 메모리 | 코드 길이 |
|---|---|---|---|
| C++ 17 | 48 ms | 12860 KB | 674 B |
This post is licensed under CC BY 4.0 by the author.