일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- async
- 입력
- swift
- ios
- Custom Class
- readLine
- hitTest
- RxSwift
- vtable
- UIResponder
- input
- DISPATCH
- 전자출입
- AVCaptureSession
- delays deallocation
- Combine
- 사내배포
- moya
- ReactorKit
- UserDefaults
- binder
- 공백
- Responder chain
- weak self
- Asnyc
- MaxHeap
- BidirectionalCollection
- reversed
- URLSession
- Today
- Total
틈틈히 적어보는 개발 일기
[TIL #1] Swift에는 없는 자료구조: queue, deque 본문
Swift에는 없는 자료구조인 queue와 deque를 O(1)로 어떻게 구현할까? 에 대한 질문을 받아서 확실한 대답이 아닌 추측으로 대답했는데 반은 맞은 것 같다.
reversed()의 시간 복잡도가 O(1)임을 알고 있었는데, 이를 통해서 queue와 deque를 구현할 수 있지 않을까 생각했었다.
그래서 살펴보니 reversed()의 리턴 타입이 ReversedCollection<Array<Element>> 였었고, 이 ReversedColleciton을 다시 살펴보니 BidirectionalCollection 프로토콜이 채택되어 있었고 이를 다시 살펴보니 원하는 결과를 얻었다.
BidirectionalColleciton이 단어 뜻 그대로 양방향콜렉션인데 index가 움직일 때마다 반대쪽에 위치하는 index도 동일하게 움직인다고 한다. 결국 reversed()의 모태인 BidirectionalCollection으로 인해서 반대편 index를 이용해 바로바로 결과를 보여주기에 O(1)이 가능했나보다.
##
Pingu라는 분께서 친절하시게도 직접 자료구조를 구현해서 소스코드를 올려주셨다. 참고해 보면 좋을 듯 하다.
[Swift] Queue(큐) 간단 구현
안녕하세요 Pingu 입니다.🐧 Swift에는 Queue 자료구조가 따로 없어서 직접 만들어야합니다.😂 참고로 Queue는 FIFO(First In First Out)의 구조를 갖는 자료구조입니다. 매번 만드는게 귀찮아서 이렇게
icksw.tistory.com
https://icksw.tistory.com/213?category=932556
[Swift] Deque(덱) 간단 구현
안녕하세요 Pingu 입니다.🐧 Swift에는 Deque 자료구조가 따로 없어서 직접 만들어야합니다.😂 참고로 Deque는 앞뒤로 모두 삽입, 삭제가 가능한 자료구조입니다. 매번 만드는게 귀찮아서 이렇게 따
icksw.tistory.com
'📝 TIL' 카테고리의 다른 글
[TIL #7] ReactorKit (0) | 2022.06.17 |
---|---|
[TIL #6] RxSwift - Binder, MainThread에서 동작함을 확인하다 (0) | 2022.06.09 |
[TIL #5] MaxHeap, 최대힙 (0) | 2022.04.18 |
[TIL #3] strong self, weak self, delays deallocation (0) | 2022.04.03 |
[TIL #2] 네트워크 코드를 더욱 깔끔하게 (feat: URLSession, Moya) (0) | 2022.03.31 |