Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Xcode
- combine
- 리펙터링
- swiftUI
- HIG
- Refactoring
- collectionview
- MVVM
- UITextView
- ios
- uitableview
- RxCocoa
- uiscrollview
- SWIFT
- Clean Code
- Protocol
- 리팩토링
- Observable
- ribs
- clean architecture
- tableView
- 스위프트
- 애니메이션
- swift documentation
- rxswift
- UICollectionView
- Human interface guide
- 클린 코드
- map
- 리펙토링
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 배열 합치는 연산자 주의 사항 (reduce, flatMap, joined) 본문
결합 연산자
- 2차원 배열을 1차원 배열로 만들 때, 3가지의 연산자 사용이 가능
var a = [[1, 2], [3], [4, 5]]
let a_1 = a.flatMap { $0 }
let a_2 = a.reduce([], +)
let a_3 = Array(a.joined())
// [1, 2, 3, 4, 5]
- 하지만 여기서 reduce 연산자를 사용하면 O(n^2)의 비용이 들고 flatMap, joined를 사용하면 O(n) 비용이 들기때문에 reduce를 지양할 것
reduce를 사용했을때 O(n^2) 비용이 드는 이유
- 3*3 배열일때 예시
var b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- 초기 상태 = []
- 첫번째 배열 순회하면서 append: [[1, 2, 3]]
- 누적 연산 카운트: 3
- 두번째 배열 순회하면서 append: [1, 2, 3, 4, 5, 6]
- 누적 연산 카운트: 6
- 두번째 배열 순회하면서 append: [1, 2, 3, 4, 5, 6, 7, 8, 9]
- 누적 연산 카운트: 9
- 총 9 연산되어 3*3, 즉 2차원 배열의 개수가 n*n이라고 한다면 n*n번 연산을 하므로 O(n^2) 비용이 소비됨
'iOS 응용 (swift)' 카테고리의 다른 글
Comments