자료구조

집합(Set)

꾸준2 2020. 6. 30. 11:37
집합 : 중복되지 않은 항목들의 그룹

장점
1. 유일한 항목을 확인하고 추가하기 때문에 O(1) 상수 시간이 걸린다.(해시 테이블의 구현을 기초로하기 때문)

사용법
var setA = new Set();

속성
(집합 길이)
size -> setA.size

메소드
(원소 추가)
.add -> setA.add(값)

(원소 삭제)
.delete -> setA.delete(값)

(원소 포함)
.has -> setA.has(값)

(원소 모두 삭제)
.clear -> setA.clear()
var setA = new Set()

// 추가
setA.add(1)
setA.add(3)
setA.add(5)
console.log(setA) // Set { 1, 3, 5 }

// 삭제
setA.delete(3)
console.log(setA)// Set { 1, 5 }

// 포함
console.log(setA.has(3)) // false
console.log(setA.has(1)) // true

// 길이 확인
console.log(setA.size) // 2

// 모두 삭제
setA.clear()
console.log(setA) // set{}
console.log(setA.size) // 0

 

교집합(interrsection)

두 집합의 공통 값 추출

var setA = new Set([1,2,3,4,5])
var setB = new Set([1,3,5])

var intersection = new Set();

for(var common of setA) {
  if(setB.has(common)) {
    intersection.add(common)
  }
}

console.log(intersection) // Set { 1, 3, 5 }

 

합집합(union)

두 집합의 모든 값들을 포함하고 중복된 값은 제외

var setA = new Set([2,4,6,8,10])
var setB = new Set([1,3,5,7,9,2,4,6])

var union = new Set(setA);

for(var sum of setB) {
  union.add(sum)
}

console.log(union) // Set { 2, 4, 6, 8, 10, 1, 3, 5, 7, 9 }

차집합(difference)

두 집합의 공통되지 않은 값

var setA = new Set([2,4,6,8,10])
var setB = new Set([1,3,5,7,9,2,4,6])

var difference = new Set(setA);

for(var sum of setB) {
  difference.delete(sum)
}

console.log(difference) // Set Set { 8, 10 }