분류 전체보기55 LinkedList 정리 (Single, Double, Circular) Linked List List의 종류 배열(Array) 기반 연결(Link) 기반 배열 기반 리스트 장점 특정 위치의 데이터 조회가 빠르다 단점 데이터의 추가, 삭제 비용이 크다 (다 뒤로 밀거나 앞으로 당기거나..) 크기가 고정되어 있다. 맨 앞에도 쉽게 넣고 싶고, 맨 뒤에도 쉽게 넣고 싶은데..? 그럴 때 사용할 수 있는게 연결 기반 (linked) 리스트 ! 연결 기반 리스트의 종류 단방향 연결 리스트 (Linked List라고 하면 기본으로 이것) 양방향 연결 리스트 (Double Linked List) Circular Linked List (원형 혹은 순환 연결 리스트) Circular single Circular Double 연결 기반 리스트 Node Node는 데이터(Item)과 포인터(P.. 2023. 8. 9. Stack 구현 (Array, LinkedList) Stack LIFO: Last In First Out 리스트의 제한된 형태: 넣고 빼기가 리스트의 한쪽 끝에서만 가능 Notation PUSH POP TOP: 맨 위의 값 리턴. 종류 Array based link based Array based Stack struct stack { var elemensts: [T] = [] var isEmpty: Bool { elemensts.isEmpty } mutating func push(element: T) { elemensts.append(element) } @discardableResult mutating func pop() -> T? { elemensts.popLast() } func peek() -> T? { elemensts.last } } 단순 배열을.. 2023. 8. 4. [WWDC19] Advances in UI Data Sources (DiffableDataSources) 컴포지셔널 레이아웃에 이어서 연달아 보고 정리해놓았는데 노션에만 놓고 옮기는 것을 깜빡해서 지금이라도 옮겨적는다..! 적용기는 이후에 다시 남겨야겠다! 기존 DataSource 나름 굉장히 직관적이다. 하지만 앱은 계속해서 복잡해져간다. Controller Layer와 UI Layer의 대화 Smooth sailing UI: Controller, 섹션에 있는 항목의 수를 알려줘. UI: 콘텐츠를 렌더링할 때 셀을 알려줘. 문제는 여기서 발생한다. (more complex) Controller: UI야 나 바꼈는데??? (didChange) UI: 어? 그러네 그러면 나 TableView나 CollectionView UI 바꿔야겠는데??😮 이건 좀 복잡한 작업이다. 그리고 만약 정말 잘 처리해줘도 아래와 .. 2023. 6. 12. [삽질] 클래스의 확장성 개선(protocol 의존성 주입: any) Trouble Shooting (Action나누면서) 기존 상황 import Foundation public typealias CompleteBottomSheetAction = ((DidBottomSheetActionType) -> Void) protocol BottomSheetAction { func sendAction(_ action: DidBottomSheetActionType) func cancel() var completeAction: CompleteBottomSheetAction? { get } } 위와 같이 Action 프로토콜을 정의하고 해당 프로토콜을 정의하는 아래와 같은 클래스가 있다. import Foundation final class RuleBottomSheetAction: Bot.. 2023. 6. 1. 이전 1 ··· 5 6 7 8 9 10 11 ··· 14 다음 more