문제
자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, (A-B)와 (B-A)의 합집합을 A와 B의 대칭 차집합이라고 한다.
예를 들어, A = { 1, 2, 4 }이고, B = { 2, 3, 4, 5, 6 }라고 할 때, A-B = { 1 }이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다.
입력
첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을빈칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈칸을 사이에 두고 각각 주어진다. 각 집합의 원소의 개수는 200,000을 넘지 않으며, 모든 원소의 값은 100,000,000을 넘지 않는다.
출력
첫째 줄에 대칭 차집합의 원소의 개수를 출력한다.
테스트 케이스
접근
두개의 수를 받는데, 첫 번째 수는 2번째 행값의 개수, 두 번째 수는 3번째 행값의 개수를 의미합니다.
문제가 요구하는 출력값은 대칭 차집합으로 두 개행의 합을 합친 다음 중복된 값을 빼면 대칭 차집합 원소의 개수가 나오게 됩니다.
예를 들어서
A집합에 1,2,3이 있고
B집합에 3,4,5가 있다고 할 때,
대칭 차집합은 1,2,4,5입니다.
대칭 차집합 사이즈를 구하는 문제 이르고 A 사이즈(3) + B 사이즈(3) -중복 값(3) 개수*2 = 4
이런 식으로 구현하니 문제가 해결되었습니다.
중복을 검사하기 위해서 hashset을 이용하여 contains를 사용하였을 때 이미 값이 있다면 count값을 올려서 중복의 개수를 계산했습니다.
코드
import java.awt.desktop.SystemEventListener;
import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
/*
1269 problem
*/
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
HashSet<Integer> hs = new HashSet<>();
//2번째행 사이즈 3번째행 사이즈 입력
StringTokenizer st = new StringTokenizer(br.readLine());
int aNum = Integer.parseInt(st.nextToken());
int bNum = Integer.parseInt(st.nextToken());
int size = 0;
int count = 0;
//2번째행 값 받기
StringTokenizer a = new StringTokenizer(br.readLine());
for(int i=0; i<aNum; i++) {
hs.add(Integer.parseInt(a.nextToken()));
}
//3번째행 값 받기
StringTokenizer b = new StringTokenizer(br.readLine());
for(int i=0; i<bNum; i++) {
int value = Integer.parseInt(b.nextToken());
if(hs.contains(value)) {
count++;
}
else {
hs.add(value);
}
}
//a행 + b행 개수 -중복되는 값들
bw.write(String.valueOf(aNum+bNum-count*2));
bw.flush();
bw.close();
}
}
주의
x
'공부 정리 > 백준' 카테고리의 다른 글
[백준] 자바 16165 걸그룹 마스터 준석이 (0) | 2021.07.16 |
---|---|
[백준] 자바 4358 생태학 (0) | 2021.07.15 |
[백준] 자바 2776 암기왕 (0) | 2021.07.13 |
[백준] 자바 1302 베스트셀러 (0) | 2021.07.12 |
[백준] 자바 1620 나는야 포켓몬 마스터 (0) | 2021.07.09 |
댓글