[ BASIC MATH ] 01. 집합 ( set ) _ with java
📚 Table of Contents
개념
[ BASIC MATH ] 01. 집합 ( set )
[ BASIC MATH ] 01. 집합 ( set ) 📚 Table of Contents 집합 ( set ) 어떤 명확한 조건을 만족시키는 서로 다른 대상들의 모임 표현 방법 원소나열법 집합의 원소를 나열하여 집합을 표현하는 방법이다. 중괄
leungnyeok.tistory.com
Java를 이용하여 집합 ( set )을 간단하게 구현한다.
Hashset을 이용하여 구현
[ Java ] HashSet 이란?
[ Java ] HashSet 이란? 📚 Table of Contents HashSet은 Set 인터페이스에서 지원하는 구현 클래스이다. 때문에 Set의 성질을 그대로 상속받는 다는 것이 특징이다. HashSet 특징 중복 허용 안함: 같은 요소를
leungnyeok.tistory.com
HashSet은 집합 연산 메서드를 제공하기 때문에 쉽게 구현 가능하다.
결과를 확인한 값들은 주석처리 후 다음 결과를 확인해야 올바른 결과를 확인할 수 있다.
import java.util.Arrays;
import java.util.HashSet;
public class a_Set {
public static void main(String[] args){
// 집합 연산
System.out.println("== 집합 연산 ==");
// 집합 a, b
HashSet a = new HashSet(Arrays.asList(1, 2, 3, 4, 5));
HashSet b = new HashSet(Arrays.asList(2, 4, 6, 8, 10));
// 1. 교집합 : a,b 원소가 같은 부분
a.retainAll(b);
System.out.println("교집합 : " + a); // 교집합 : [2, 4]
// 2. 합집합 ; a,b 두 집합의 원소를 모두 모은 집합
a.addAll(b);
System.out.println("합집합 : " + a); // 합집합 : [1, 2, 3, 4, 5, 6, 8, 10]
// 3. 차집합
a.removeAll(b);
System.out.println("차집합 : " + a); // 차집합 : [1, 3, 5]
}
}
ArrayList를 사용하여 구현 ( 집합 관련 연산 사용 X )
import java.util.ArrayList;
class MySet{
// ArrayLIst
ArrayList<Integer> list;
// 생성자 1
MySet() {
this.list = new ArrayList<Integer>();
}
// 생성자 2
// 배열을 입력받고 배열안의 원소를 모두 list 안에 넣는다.
MySet(int[] arr) {
this.list = new ArrayList<Integer>();
for (int item : arr) {
this.list.add(item);
}
}
// 원소 추가 (중복 X)
public void add(int x){
// list 순회
for (int item : this.list) {
// 넣으려는 값 x 와 list의 data가 같은 경우
if (item == x){
return;
}
}
// 같은 값이 없으면 추가
this.list.add(x);
}
// 교집합
public MySet retainAll(MySet b) {
MySet result = new MySet();
for (int itemA : this.list) { // A집합 원소를 도는 반복문
for (int itemB : b.list) { // B집합 원소를 도는 반복문
if (itemA == itemB) { // A, B 원소가 같으면 원소 추가
result.add(itemA);
}
}
}
return result;
}
// 합집합
public MySet addAll(MySet b) {
MySet result = new MySet();
for (int itemA : this.list) { // A집합 원소 추가
result.add(itemA);
}
for (int itemB : b.list) { // B집합 원소 추가
result.add(itemB);
}
return result;
}
// 차집합
public MySet removeAll(MySet b) {
MySet result = new MySet();
for (int itemA : this.list) { A집합 원소를 도는 반복문
boolean containFlag = false;
for (int itemB : b.list) { // B집합 원소를 도는 반복문
if (itemA == itemB) { // A, B 원소가 같으면
containFlag = true; // A의 원소가 B집합에 포함되어 있음
break; // 반복문 종료, 다음 A집합의 원소로
}
}
if (!containFlag) { // A집합의 원소가 B집합에 없으면 원소 추가
result.add(itemA);
}
}
return result;
}
}
public class practiceSet {
public static void main(String[] args){
MySet a = new MySet();
a = new MySet(new int[]{1, 2, 3, 4, 5});
MySet b = new MySet(new int[]{2, 4, 6, 8, 10});
MySet result = a.retainAll(b);
System.out.println("교집합 : " + result.list);
// 교집합 : [2, 4]
result = a.addAll(b);
System.out.println("합집합 : " + result.list);
// 합집합 : [1, 2, 3, 4, 5, 6, 8, 10]
result = a.removeAll(b);
System.out.println("차집합 : " + result.list);
// 차집합 : [1, 3, 5]
}
}
'Knowledge > 기초수학' 카테고리의 다른 글
[ BASIC MATH ] 03. 순열 ( permutation ) _ with java (1) | 2023.11.22 |
---|---|
[ BASIC MATH ] 03. 순열 ( permutation ) (2) | 2023.11.22 |
[ BASIC MATH ] 02. 경우의 수 _ with java (0) | 2023.11.22 |
[ BASIC MATH ] 02. 경우의 수( number of cases ) (1) | 2023.11.22 |
[ BASIC MATH ] 01. 집합 ( set ) (1) | 2023.11.22 |