본문 바로가기

학교 수업/ios 개발 공부

[swift] Set

안녕하세요 소프트웨어 공부하는 레오존입니다.

오늘은 swift에 나오는 Set에 대해 정리해보도록 하겠습니다.

 

 

 

Set

Set은 Array와 달리 순서가 없이 값들이 집합을 이루고 있는 것으로, 중복되는 멤버가 존재하지 않습니다.
또한, Set은 Array, Dictionary와 다르게 축약형이 존재하지 않기 때문에  Array, Dictionary 처럼 표현형이 다양하지 않습니다.

Set을 선언, 생성하는 표현은 아래와 같습니다.

var makeSet : Set<Int> = Set<Int>()

 

  • Set에서 insert를 사용하여 새로운 멤버를 입력할 수 있습니다. Set은 중복되는 멤버가 존재할 수 없기 때문에 똑같은 값을 여러 번 넣어줘도 하나의 멤버로 들어가게 됩니다.
makeSet.insert(13)
makeSet.insert(33)
makeSet.insert(2)  //2를 세 번 넣어줘도 2는 한번만 추가가 됨, set는 동일한 값이 여러개 저장되지 않음
makeSet.insert(2)
makeSet.insert(2)

print(makeSet) //출력되는 결과는 아래와 같습니다.
// {13, 33, 2}

 

  • Set에서 멤버가 포함되어 있는지 여부를 확인하고 싶을 때 contains를 사용하여 확인할 수 있습니다.
makeSet.contains(1)  //1이 makeSet에 들어있는지 확인, 없음 -> false
print(makeSet.contains(2)) // true가 출력됨

 

  • Set 에서 멤버 삭제를 하게 될 경우 remove를 사용하고 count를 사용하면 멤버 개수를 파악할 수 있습니다.
makeSet.remove(13) // {33, 2}
makeSet.removeFirst() // {2}


makeSet.count // 멤버가 2만 남음 -> 1개의 멤버

 

 

  • 또한 Set는 집합 연산에 활용할 수 있어 유용한데, 이는 멤버의 유일성이 보장되기 때문입니다. 중복되는 멤버가 존재하지 않는 것의 이점이죠. 아래의 예시처럼 setA와 setB를 선언하였는데, let을 사용하여 선언했기 때문에 추가와 삭제가 불가능한 Set이 생성되었습니다.
let setA: Set<Int> = [1, 2, 3, 4, 5]
let setB: Set<Int> = [33, 12, 1, 2, 39]
Set에서 집합 연산

위에서 생성된 setA와 setB를 이용하여 합집합, 합집합 오름차순 정렬, 교집합, 차집합에 대해 알아보도록 하겠습니다.

  • 합집합 : union() 메서드를 사용하여 합집합을 구할 수 있습니다.
let unionab: Set<Int> = setA.union(setB)  //setA과 setB의 합집합
print(unionab) // [39, 2, 5, 33, 1, 3, 4, 12]

 

  • 오름차순 정렬 : sorted() 메서드를 사용하여 오름차순으로 정렬해 줄 수 있습니다.
let sortedUnionab: [Int] = unionab.sorted() //위에서 구한 합집합 unionab를 정렬
print(sortedUnionab) // 결과는 아래와 같습니다.
//[1, 2, 3, 4, 5, 12, 33, 39]

 

  • 교집합(intersection) : intersection() 메서드를 사용하여 교집합을 구할 수 있습니다.
let intersectionab: Set<Int> = setA.intersection(setB) // setA와 setB의 교집합
print(intersectionab) // 결과는 아래와 같습니다.
//[1, 2]

 

  • 차집합(substracting) : substracting() 메서드를 사용하여 차집합을 구할 수 있습니다. 아래의 예시는 setA에서 setB를 뺀 경우(setA - setB) 를 나타냈습니다.
let subtractingAB: Set<Int> = setA.subtracting(setB) //setA - setB
print(subtractingAB) // 결과는 아래와 같습니다.
//[5, 3, 4]

 

 

 


이 포스팅은 야곰님의 ios프로그래밍을 위한 스위프트 기초 강의를 듣고 정리한 내용입니다.

 

야곰님의 ios 프로그래밍을 위한 스위프트 기초 바로가기

https://www.boostcourse.org/mo122/joinLectures/38564

 

iOS 프로그래밍을 위한 스위프트 기초

부스트코스 무료 강의

www.boostcourse.org