안녕하세요. 밀쿄입니다. 오늘은 이진 탐색 트리에 대해서 알아보겠습니다. 이진 탐색트리는 두 자료구조를 결합한 자료 구조 입니다. 그 자료 구조 중 하나는 탐색이 빠르지만 삽입 삭제가 안되고 다른 하나는 삽입 삭제는 빠르지만 탐색에 O(n)이란 복잡성을 가지고 있습니다. 그래서 그 두개를 합쳐서 탐색이 빠르고 삽입삭제가 빠른걸 만들고자 고안이 되었습니다. 그래서 그 두 개가 무엇인지 궁금하실텐데 바로 이진 트리와 연결리스트입니다. 자 그럼 이진 탐색 트리에 대해 본격적으로 알아보겠습니다 이진 탐색트리는 다음과 같은 특징을 가지고 있습니다. 각 노드의 왼쪽 서브트리에 있는 노드의 값은 부모 노드보다 그 값이 작다. 각 노드의 오른쪽 서브트리에 있는 노드의 값은 부모 노드보다 그 값이 크다 들어가기전에 스위..
안녕하세요. 밀쿄 입니다. 오늘은 우리가 무심코 지나치게 되는 UIWindow에 대해서 알아보겠습니다. 저는 코드로 화면을 짜기 때문에 사실 새 프로젝트 파일을 만들 때마다 UIWinodw를 생성해서 사용하는데 매번 지나치고 가는 것 같아서 이 기회에 정리해보고자합니다, 기본적으로 UIWindow는 뷰나 객체들에게 이벤트를 전달하는 역할을 합니다. 다시말해서 View Controller와 함께 이벤트를 처리하고 앱 운영에 필수적인 다른 많은 작업을 수행하게 되는녀석입니다.' 이러한 UIWIndow는 기본적으로 제공해줍니다. 단, 스토리보드를 사용할 때만 말이죠 참고로 이 때 AppDelegate나 SceneDelegate에 UIWindow타입의 프로퍼티가 존재해야합니다, 그래서 우리가 AppDelegat..
안녕하세요. 밀쿄 입니다. 오늘은 flatMap, compactMap에 대해서 알아보겠습니다. flatMap에 쓰임새에 대해서 한 번 보겠습니다. let language = [["C", "C++"], ["Objective-C", "Swift"], ["Java", "Kotlin"]] print(language.flatMap({ $0 })) //결과 //["C", "C++", "Objective-C", "Swift", "Java", "Kotlin"] Sequence에서 각 요소들도 Sequence일 때 Elements를 flat하게 만들어줄 때 쓰곤했었죠. 스위프트 오픈 소스를 보면 다음과 같이 구현되어있습니다. extension Sequence { public func flatMap(_ transform:..
안녕하세요. 밀쿄입니다. 오늘은 rethrows에 대해서 알아보겠습니다. rethrows에 대해 설명하기 위해서는 throws에 대해서 먼저 설명하겠습니다. 다음과 같은 코드가 있습니다. 오늘 이 코드로 우려먹을꺼지만 코드에 억지가 많습니다 참고부탁드립니다. enum EnterResult { case noWaitingLine case accept case reject } protocol WaitingLineProtocl { associatedtype WaitingLine = [String: Ticket] } struct Movie: WaitingLineProtocl { private var name: String public init(name: String) { self.name = name } func..
안녕하세요 밀쿄입니다. 오늘은 날짜를 비교하는 방법에 대해서 알아보겠습니다. 제가 날짜를 비교할 때 두 날짜의 차이를 연산해서 0인지 늘 체크했었는데 그것보다 더 간단한 방법이 있더라구요. 오늘은 그거에 대해 알아보겠습니다, 하지만 그거만 하면 글이 짧아질 것 같으니 유용한 팁 하나도 같이 넣어두겠습니다. ○ Date()로 생성한 날짜로 현지 시간에 맞게 출력하고 싶을 때 let date = Date() let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy. MM. dd HH:mm:ss" dateFormatter.timeZone = TimeZone.current print(dateFormatter.string(from: date)) /..
오늘은 스위프트의 프토토콜 중 하나인 Sequence에 대해서 알아보겠습니다. Sequence는 꽤 중요한 프로토콜이라고 생각합니다. Array 타입을 사용할 때 대부분의 기능을 이 프로토콜이 제공할 뿐만 아니라 map, filter같은 것도 이 프로토콜에 정의 되어 있습니다. 애플문서는에는 다음과 같이 언급되어 있습니다 "요소에 순차적으로 반복 접근 할 수 있는 타입" 조금 더 살펴보자면 시퀀스는 한 번에 하나씩 단계별로 수행할 수 있는 값 리스트이고 시퀀스 요소로를 반복하는 가장 일반적인 방법은 for-in 이라고 합니다. 그리고 그렇게 for-in을 사용하면 시퀀스에 특정 값이 포함되어 있는지 확인할 수도 있죠. 또한 시퀀스의 끝에 도달할 때까지 각 요소를 테스트할 수 있죠 그리고 사용자가 커스텀 ..
와 백만년만에 포스팅이네요. 정말로 정신없이 지내고 있습니다.. 개인앱 리팩한다고 정신이 없습니다.. 내가 짜는게 코드인지 스파게티인지...(아마 스파게티에 더 가까울껍니다..) 오늘은 Combine을 들고왔습니다.. iOS13부터 사용가능하지만 앞으로 개인적으로 많이 사용될 것 같습니다 특히 Notification 이나 KVO의 사용빈도가 확 줄어드네요.. 특히 콜백 지옥에서 벗어날 수 있다고 생각합니다.. 비동기 이벤트 처리하기도 쉽구요 조금 극단적인 비유를 하자면.. 저렇게 코드가 계속 가면... 코드의 가독성이 좋을까요? 에러처리는 또 어떨까요.. 글쎼요 저는 좀 별로라고 봅니다 만약에 세번째 오퍼레이션에서 d가 0이면 에러가 나니까 유저에게 에러 메세지를 던지고 싶다면? 이렇게 되면 전 개인적으..
안녕하세요 밀쿄입니다. 오늘은 알고리즘 문제를 들고왔습니다. 쉬운 문제이니 들고왔으니 다같이 풀어봅시다 https://programmers.co.kr/learn/courses/30/lessons/42840?language=swift 코딩테스트 연습 - 모의고사 | 프로그래머스 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4..
- Total
- Today
- Yesterday
- 알고리즘
- SwiftUI
- iOSCombine
- 스유
- programmers
- UIViewControllerRepresentable
- 자료구조
- 결합연산자
- 스위프트유아이
- Queue
- Just
- swift
- replaceNil
- 현업이그리운
- combine
- Apple
- 스위프트
- 삨
- compactMap
- MVC
- 스택뷰
- BBIK
- 텔큐온
- ErrorHandling
- SEQUENCE
- CombineLatest
- 콤바인
- ios
- AutoLayout
- 유니온파인드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |