Swift 코딩테스트 준비

Swift 컬렉션 타입(Array, Dictionary, Set)

천 원 2022. 5. 14. 23:05

Array: 순서가 있는 리스트 컬렉션

// 배열 선언
var array: Array<Int> = []
var array: [Int] = [] 
var array = [Int]()
var array = Array(repeating: 1, count: 5) // [1,1,1,1,1)

//배열 추가
array.append(1) 
array.append(contentsOf: [2,3,4])
print(array) // [1,2,3,4]

//배열 삽입
array.insert(0, at: 5)
print(array) // [5,1,2,3,4]

// 배열 요소 변경하기
var array = [1, 2 ,3]
array[0] = 10                  // [10, 2, 3]
array[0...2] = [10, 20, 30]    // [10, 20, 30]
array[0...2] = [0]             // [0]

// 삭제
array.remove(at: 0) // 지정삭제
array.removeLast() // 마지막 삭제
array.removeAll() // 전체 삭제
array.removeSubrange(1...3) // 특정 범위 삭제

//정렬
array.sort() // 오른차순 정렬
array.sort(by: >) // 내림차순 으로 정렬
let sortedArray = array.sorted() // 정렬한 값 리턴

array.contains(1) // 멤버 포함여부
array.swapAt(0, 4) // 배열 두개 위치 swap
array.shuffle() // 배열 무작위 섞기
array.count // 멤버 수 확인
array.isEmpty // 비어있는지
array.first // 첫번째
array.last // 마지막

Dictionary: "키"와 "값"의 쌍으로 이루어진 컬렉션 타입

// 딕셔너리 선언
var dictionary: Dictionary<String, Int> = [:]
var dictionary: [String: Int] = [:] 
var dictionary: [String: Int]()

// 키에 해당하는 값 할당
dictionary["apple"] = 200 
dictionaty.updateValue(300, forKey: "orange")
print(dictionary) // ["apple":200, "orange":300]

//요소 접근
dictionary["apple"]  // Optional(200)
dictionary["apple", default: 100] // 200

//키에 해당하는 값 제거
dictionary.removeValue(forKey: "apple")
dictionary["apple"] = nil
dictionary.removeAll() // 전체삭제

// 나열
dictionary.keys // key 나열 "apple", "orange"
dictionary.values // 200, 300

dictionary.count // 갯수 확인
dictionary.isEmpty // 비어있는지 확인

Set: 정렬되지 않은 컬렉션, 배열과 달리 중복 요소를 허용하지 않는다

// set 선언
var set: Set<Int> = []
var set: Set<Int>()
var set: NSSet = [] // 여러 타입을 저장하는 Set 생성

set.count // 갯수 확인
set.isEmpty // 비어있는지

var set: Set<Int> = [1, 2, 3, 4]
set.contains(1) // 요소 확인 true

// 값넣기
set.insert(1)
set.update(with: 1)

// 삭제
set.remove(1)
set.removeAll()

// 포함관계
var set1: Set<Int> = [1, 2, 5, 0]
var set2: Set<Int> = [1, 2]

set1.isSubset(of: set2) // set1은 set2의 부분집합이냐? false
set1.isSuperset(of: set2) // set1은 set2의 상위집합이냐? true
set1.isDisjoint(with: set2) // set1은 set2와 서로수 집합

var a: Set = [1,2,3,4,5,6,7,8,9]
var b: Set = [1,3,5,7,9]
var c: Set = [2,4,6,8,10]

// 1. intersection : 교집합을 새로운 Set으로 리턴
a.intersection(b)                     // [1, 3, 5, 9, 7]
b.intersection(c)                     // [] : 겹치는 요소 없음

// 2. union : 합집합을 새로운 Set으로 리턴
a.union(b)                            // [2, 7, 9, 4, 8, 5, 6, 1, 3]
b.union(c)                            // [9, 3, 10, 4, 1, 8, 7, 2, 6, 5]

// 3. sysmetricDifference : 여집합을 새로운 Set으로 리턴
a.symmetricDifference(b)              // [4, 8, 6, 2]
b.symmetricDifference(c)              // [10, 9, 8, 6, 7, 1, 2, 4, 3, 5]

// 4. subtracting : 차집합을 새로운 Set으로 리턴
a.subtracting(b)                      // [4, 8, 6, 2]
b.subtracting(c)                      // [9, 1, 3, 5, 7]