티스토리 뷰

반응형

 

 

 

안녕하세요! 저는 Develop 멍구 입니다. ^-^// 🤗
오늘은 스위프트의 자료구조 중 하나인 Set, 집합 컬렉션의 대표적인 집한연산 메서드를 정리해보겠습니다. 그럼 바로 시작하겠습니다~ 🤩

 

 

 


iOS swift Set, 집합 기본연산 메서드

 


합집합 연산
Union

Set 멤버 메서드 중 하나인 union 메서드는 다른 Set을 인자로 받아 두 Set 집합의 합집합을 반환하는 메서드입니다.
반환값 또한 Set으로 비정렬 형태의 값을 반환하게 됩니다. 

 

// union은 두 집합 Set의 합집합을 반환합니다.
let setA: Set = [1, 2, 3]
let setB: Set = [3, 4, 5]
print("합집합 result : \(setA.union(setB))")

위의 코드를 보시면, setA는 [1, 2, 3], setB는 [3, 4, 5]의 값을 갖고 있습니다. Set 집합은 고유의 값만을 가지므로 이들의 합집합은 [1, 2, 3, 4, 5]가 됩니다. 

다만, 비정렬의 특성을 지닌 Set을 반환하기 때문에 합집합의 순서는 항상 다를 수 있습니다.

 

Set 집합 합집합(union) 연산결과 예시

 

var setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [3, 4, 5, 6, 7]

// 합집합 연산의 결과를 setA가 갖습니다. 
// setA는 변수(variable)이어야 합니다.
setA.formUnion(setB)
print(setA)

만약 접근한 Set 컬렉션을 직접 변경 시키는 in-place mutating method를 원한다면, union메서드 대신 formUnion 메서드를 사용해서 접근 Set 컬렉션의 값을 in-place 형식으로 변경할 수 있습니다.

단 mutating method를 사용하고자 한다면 변경하려는 대상 접근 변수는 상수타입이어서는 안됩니다. 변수상태로서 변형 가능해야 하는 것이죠.

 

 


교집합 연산
intersection

intersection 또한 Set 컬렉션의 인스턴스 멤버 메서드입니다. union과 같이 다른 Set 집합을 인자로 받으며, 두 Set 집합의 여집합 Set을 반환하게 됩니다. 

 

// intersection은 두 집합 Set의 교집합을 반환합니다.
let setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [3, 4, 5, 6, 7]
print("교집합(intersection) result : \(setA.intersection(setB))")

위를 보시면 setA는 [1, 2, 3, 4, 5], setB는 [3, 4, 5, 6, 7]을 갖고 있습니다. setA, setB가 모두 갖고 있는 값, 여집합은 3, 4, 5입니다. 

그러므로 intersection을 사용한 결과 값으로 3, 4, 5를 갖는 Set 집합을 반환하게 되며 결과는 아래와 같습니다. 

두 집합의 교집합(intersection) 결과 예시

var setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [3, 4, 5, 6, 7]
print("교집합(intersection) result : \(setA.intersection(setB))")

// formIntersection 사용 시, setA는 변수(variable) 이어야 합니다. 
setA.formIntersection(setB)
print(setA)

만약 결과값을 접근한 원본 Set에 저장하려면 formIntersection을 사용하면 됩니다.

 

 


대칭차 연산
symmetricDifference

symmetricDifference는 두 집합의 여집합을 제외한 값을 가진 Set으로 반환합니다. 

 

// symmetricDifference는 두 집합 Set의 대칭차(교집합을 제외한 값)을 반환합니다.
var setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [3, 4, 5, 6 ,7]
print("대칭차(symmetricDifference) result : \(setA.symmetricDifference(setB))")

위의 코드를 보시면 setA는 [1, 2, 3, 4, 5], setB는 [3, 4, 5, 6, 7]을 갖습니다. 이 두 집합이 공통으로 갖고 있는 [3, 4, 5]를 제외한 값들이 대칭차 연산의 결과입니다.

그렇게 나온 symmetricDifference의 결과는 아래와 같습니다. 

대칭차(symmetricDifference) 연산 result

대칭차 연산 또한 formSymmetricDifference 메서드를 통해 원본 Set 집합에 결과를 대입할 수 있습니다. 

 

 


차집합 연산
subtracting

차집합 연산은 원본 Set 집합과 특정 대상 집합의 차집합 연산을 수행하여 그 값을 Set으로 반환합니다. 

// subtracting은 두 집합의 차집합을 반환합니다.
var setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [3, 4, 5, 6, 7]
print("차집합(subtracting) result : \(setA.subtracting(setB))")

subtracting 차집합 연산 result

차집합의 결과를 원본 Set에 직접 할당하고 싶다면, substract(_:) 메서드를 사용하시면 됩니다.

 

이렇게 대표적인 Swift Set 연산 메서드를 요약하자면,
- union(formUnion)은 합집합 연산
- subtracting(subtract)는 차집합 연산
- symmetricDifference(formSymmetricDifference)는 대칭차 연산
- intersection(formIntersection)는 교집합 연산

이 되겠습니다 ㅎㅎ

 

몇번만 사용해보면 익숙해질 수 있으니 유용한 Set 연산 메서드!
잘 익혀두면 유용하게 사용할 수 있어 좋을 것 같습니다. ^-^//

다음에 또 좋은 주제로 포스팅 다뤄보겠습니다. 그럼 이만, 즐거운 코딩 되시기 바랍니다. 👩🏻‍💻

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함