320x100
728x90

 

 

📌 집합(Sets)

순서와 상관없이 같은 타입의 다른 값을 저장한다. 

타입은 반드시 hashable(String, Int, Double, Bool) 이어야 한다.

 

 

 

1️⃣ 집합 생성(초기화)

 

Set<Element> 으로 작성한다. 저장할 값의 타입을 Element에 지정하면 된다. 

var letters = Set<Character>()

 

배열 리터럴로 집합 생성

집합 타입 Set을 명시해주지 않으면 안된다. 하지만 값 타입은 생략 가능(하나 이상의 값으로 초기화 할 경우)

var genres : Set<String> = ["Rock", "Classic", "Hip Hop"]

// 값 타입 생략
var genres : Set = ["Rock", "Classic", "Hip Hop"]

 


 

2️⃣ 집합 요소 추가

 

letters.insert("a")

// 빈 집합으로 초기화
letters = []

 


 

3️⃣ 합 요소 삭제 

 

remove 사용 

/* genres에 Rock이 있으면 제거하고 아니면 nil 반환 */

if let removeGenre = genres.remove("Rock"){
	print("\(removeGenre)")
}else{
	print("nothing")
}

 

 


 

4️⃣ 집합 특정 요소 포함 확인 

 

contains 사용 

if genres.contains("Funk"){
	print("Y")
}else{
	print("N")
}

// N 출력

 

 


 

5️⃣ 집합 요소 출력 및 정렬

 

for genre in genres{
	print("\(genre)")
}
// Rock
// Classic
// Hip hop

for genre in genres.sorted() {
	print("\(genre)")
}
// Classic
// Hip hop 
// Rock

 


 

6️⃣ 집합 연산 수행

 

 

1. 교집합

 

a.intersection(b)

 

 

2. 대칭 차집합

A - B + B - A

 

a.symmetricDifference(b)

 

 

3. 합집합

 

a.union(b)

 

 

4. 차집합

A - B

 

a.subtracting(b)

 

 

 

let odd: Set = [1, 3, 5, 7, 9]
let even: Set = [0, 2, 4, 6, 8]
let prime: Set = [2, 3, 5, 7]

odd.union(even).sorted()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
odd.intersection(even).sorted()
// []
odd.subtracting(prime).sorted()
// [1, 9]
odd.symmetricDifference(prime).sorted()
// [1, 2, 9]

 

 

👇 아래는 true or false를 반환하는 집합 연산자이다. 

 

 

 

5. 부분집합 

a가 b의 부분집합인지

 

a.isSubset(of:b)

 

 

6. 초집합

a가 b를 포함하는지

 

a.isSuperset(of:b)

 

 

7. 교집합

a와 b의 공통 값이 있는 지

 

a.isDisjoint(with:b)
728x90
반응형