Skip to content

Commit 1909bc5

Browse files
committed
[Silver IV] Title: 차집합, Time: 1884 ms, Memory: 213544 KB -BaekjoonHub
1 parent 32a40c4 commit 1909bc5

2 files changed

Lines changed: 73 additions & 0 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# [Silver IV] 차집합 - 1822
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1822)
4+
5+
### 성능 요약
6+
7+
메모리: 213544 KB, 시간: 1884 ms
8+
9+
### 분류
10+
11+
자료 구조, 해시를 사용한 집합과 맵, 정렬, 트리를 사용한 집합과 맵
12+
13+
### 제출 일자
14+
15+
2024년 4월 10일 15:36:02
16+
17+
### 문제 설명
18+
19+
<p>몇 개의 자연수로 이루어진 두 집합 A와 B가 있다. 집합 A에는 속하면서 집합 B에는 속하지 않는 모든 원소를 구하는 프로그램을 작성하시오.</p>
20+
21+
### 입력
22+
23+
<p>첫째 줄에는 집합 A의 원소의 개수 n(A)와 집합 B의 원소의 개수 n(B)가 빈 칸을 사이에 두고 주어진다. (1 ≤ n(A), n(B) ≤ 500,000)이 주어진다. 둘째 줄에는 집합 A의 원소가, 셋째 줄에는 집합 B의 원소가 빈 칸을 사이에 두고 주어진다. 하나의 집합의 원소는 2,147,483,647 이하의 자연수이며, 하나의 집합에 속하는 모든 원소의 값은 다르다.</p>
24+
25+
### 출력
26+
27+
<p>첫째 줄에 집합 A에는 속하면서 집합 B에는 속하지 않는 원소의 개수를 출력한다. 다음 줄에는 구체적인 원소를 빈 칸을 사이에 두고 증가하는 순서로 출력한다. 집합 A에는 속하면서 집합 B에는 속하지 않는 원소가 없다면 첫째 줄에 0만을 출력하면 된다.</p>
28+
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
import java.util.StringTokenizer;
7+
import java.util.TreeMap;
8+
9+
public class Main {
10+
11+
public static void main(String[] args) throws IOException {
12+
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
13+
StringTokenizer st = new StringTokenizer(bf.readLine());
14+
15+
Map<Integer, Boolean> map = new TreeMap<>();
16+
17+
int aCount = Integer.parseInt(st.nextToken());
18+
int bCount = Integer.parseInt(st.nextToken());
19+
20+
st = new StringTokenizer(bf.readLine());
21+
for (int i = 0; i < aCount; i++) {
22+
map.put(Integer.parseInt(st.nextToken()), true);
23+
}
24+
25+
st = new StringTokenizer(bf.readLine());
26+
for (int i = 0; i < bCount; i++) {
27+
map.put(Integer.parseInt(st.nextToken()), false);
28+
}
29+
30+
int count = 0;
31+
StringBuilder sb = new StringBuilder();
32+
33+
for (Map.Entry<Integer, Boolean> entry : map.entrySet()) {
34+
if (entry.getValue()) {
35+
sb.append(entry.getKey()).append(" ");
36+
count++;
37+
}
38+
}
39+
40+
System.out.println(count);
41+
if (count > 0) {
42+
System.out.println(sb.toString());
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)