Post

자료구조 set

자료구조 set
  1. Set은 순서가 없고, 중복을 허용하지 않는 컬렉션 타입이다.
  2. 탐색 속도가 배열에 비해서 빠르다.
  3. 특정한 순서없이 저장되기 때문에 반복문을 사용할때마다 순서가 달라진다.

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공통된 값만 남김
  • subtractingsetA에서 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.