자료구조 set
자료구조 set
- Set은 순서가 없고, 중복을 허용하지 않는 컬렉션 타입이다.
- 탐색 속도가 배열에 비해서 빠르다.
- 특정한 순서없이 저장되기 때문에 반복문을 사용할때마다 순서가 달라진다.
Set
선언 및 초기화
1
2
var numbers: Set<Int> = [1, 2, 3, 4, 5]
print(numbers) // 출력 예시: [5, 3, 1, 2, 4] (순서가 일정하지 않음)
Set
은[ ]
를 사용하여 초기화하지만, 내부 요소의 순서는 정해지지 않음.
중복된 값을 추가하면 자동으로 제거됨.
1
2
var uniqueNumbers: Set<Int> = [1, 2, 2, 3, 4, 4, 5]
print(uniqueNumbers) // 출력: [1, 2, 3, 4, 5] (중복 제거됨)
Set
에 요소 추가 및 삭제
1
2
3
4
5
6
7
8
9
10
11
12
13
var fruits: Set<String> = ["🍎", "🍌", "🍇"]
// 요소 추가
fruits.insert("🍊")
print(fruits) // 출력 예시: ["🍇", "🍌", "🍊", "🍎"]
// 요소 삭제
fruits.remove("🍌")
print(fruits) // 출력 예시: ["🍇", "🍊", "🍎"]
// 모든 요소 삭제
fruits.removeAll()
print(fruits) // 출력: []
Set
연산 (합집합, 교집합, 차집합)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
let setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [3, 4, 5, 6, 7]
// ✅ 합집합 (union)
let unionSet = setA.union(setB)
print(unionSet) // 출력: [1, 2, 3, 4, 5, 6, 7]
// ✅ 교집합 (intersection)
let intersectionSet = setA.intersection(setB)
print(intersectionSet) // 출력: [3, 4, 5]
// ✅ 차집합 (subtracting)
let subtractSet = setA.subtracting(setB)
print(subtractSet) // 출력: [1, 2]
union
은 두 개의Set
을 합쳐서 중복을 제거한 새로운 Set 반환intersection
은 공통된 값만 남김subtracting
은 setA에서 setB에 있는 요소를 제외한 나머지 반환
Set
을 활용한 중복 제거 예제
1
2
3
4
5
let array = [1, 2, 2, 3, 4, 4, 5]
let uniqueSet = Set(array) // 중복 제거됨
let uniqueArray = Array(uniqueSet) // 다시 배열로 변환
print(uniqueArray) // 출력: [1, 2, 3, 4, 5] (중복 제거된 배열)
Set
을 사용하면 배열에서 중복을 쉽게 제거할 수 있음!
Set
에서 특정 값 포함 여부 확인
1
2
3
4
5
6
let colors: Set = ["red", "blue", "green"]
// 특정 값이 포함되어 있는지 확인
if colors.contains("red") {
print("🔴 red 포함됨!") // ✅ 출력됨
}
contains(_:)
를 사용하면 특정 값이Set
에 포함되어 있는지 빠르게 확인 가능.
This post is licensed under CC BY 4.0 by the author.