집합
2022. 6. 10. 18:01ㆍ수학/기초 수학
목표: 집합에 대해 이해하고, 자바로 집합을 구현한다.
1. 집합
2. 교집합
3. 합집합
4. 차집합
5. 여집합
집합(set) : 특정 조건에 맞는 원소들의 모임
표현 방법
1. 원소 나열법
2. 조건 제시법
3. 벤다이어그램
교집합: 두 집합이 공통으로 포함하는 원소로 이루어진 집합
합집합: 두 집합 어느 하나라도 속하는 원소로 이루어진 집합
차집합: A(or B)에만 속하는 원소들의 집합
여집합: 전체집합(U) 중 A와 B의 원소가 아닌 원소들의 집합
Java - HashSet을 이용하여 집합 연습해보기
// 기초 수학 - 집합
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
//1. w자바에서 집합 사용 - HashSet
System.out.println("== HashSet ==");
HashSet set1 = new HashSet();
set1.add(1); // set은 데이터가 중복 해서 들어가지지 않음
set1.add(1);
set1.add(1);
System.out.println("set1 = " + set1); // 따라서 [1]출력
set1.add(2);
set1.add(3);
System.out.println("set1 = " + set1); //데이터가 중복이 아니므로 2 3 들어감
set1.remove(1); // 값 1 지움
System.out.println("set1 = " + set1);
System.out.println(set1.size());
System.out.println(set1.contains(2));
// 2. 집합 연산
System.out.println(" == 집합 연산 == ");
// // 2-1. 교집합
// HashSet a = new HashSet(Arrays.asList(1,2,3,4,5));
// HashSet b = new HashSet(Arrays.asList(2,4,6,8,10));
// a.retainAll(b); //교집합 계산. a에는 교집합원소만 남음
// System.out.println("교집합: " + a );
// // 결과 > 교집합: [2, 4]
// // 2-2. 합집합
// a.addAll(b);
// System.out.println("합집합: " + a); //합집합 계산, a에는 b의 원소가 전부 들어감
// // 결과 -> 합집합: [1, 2, 3, 4, 5, 6, 8, 10]
// // 2-3. 차집합
// a.removeAll(b);
// System.out.println("차집합: " + a);
// // 결과 -> 차집합: [1, 3, 5]
}
}
Java - HashSet을 사용하지 않고 집합 구현하기
//Practice
// ArrayList를 사용한 집합 구현 실습 (집합 관련 연산 사용 X)
import java.util.ArrayList;
class MySet {
// ArrayList
ArrayList<Integer> list;
// 생성자1
MySet() {
this.list = new ArrayList<Integer>();
}
// 생성자 2
MySet(int[] arr) {
this.list = new ArrayList<Integer>();
for(int item: arr) {
this.list.add(item);
}
}
// 원소 추가(중복 X)
public void add(int x) {
for(int item: this.list) {
if(item == x) {
return;
}
}
this.list.add(x);
}
// 교집합
public MySet retainAll(MySet b) {
MySet result = new MySet();
for(int itemA: this.list) {
for(int itemB: b.list) {
if(itemA == itemB) {
result.add(itemA);
}
}
}
return result;
}
// 합집합
public MySet addAll(MySet b) {
MySet result = new MySet();
for(int itemA: this.list) {
result.add(itemA);
}
for(int itemB: b.list) {
result.add(itemB);
}
return result;
}
// 차집합
public MySet removeAll(MySet b) {
MySet result = new MySet();
for(int itemA: this.list) {
boolean containFlag = false;
for(int itemB: b.list) {
if(itemA == itemB) {
containFlag = true;
break;
}
}
if(!containFlag) {
result.add(itemA);
}
}
return result;
}
}
public class Pjactice {
public static void main(String[] args) {
MySet a = new MySet();
a.add(1);
// a.add(1);
// a.add(1);
System.out.println(a.list);
a.add(2);
a.add(3);
System.out.println(a.list);
a = new MySet(new int[] {1,2,3,4,5});
MySet b = new MySet(new int[] {2,4,6,8,10});
System.out.println("a: " + a.list);
System.out.println("b: " + b.list);
MySet result = a.retainAll(b);
System.out.println("교집합: " + result.list);
result = a.addAll(b);
System.out.println("합집합: " + result.list);
result = a.removeAll(b);
System.out.println("차집합: " + result.list);
}
}
'수학 > 기초 수학' 카테고리의 다른 글
순열과 조합을 이용한 함수의 개수 (0) | 2022.05.01 |
---|