선택 정렬은 가장 작은 값을 찾아서 앞으로 보내주는 정렬입니다. 첫 번째 원소를 두 번째 원소부터 마지막 원소까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 원소를 세 번째 원소부터 마지막 원소와 차례대로 비교하여 그중 가장 작은 값을 찾아 두번째 위치에 놓는 과정을 반복합니다. + 선택정렬을 코드로 작성할 때는 가장 작은 값을 찾기 위한 min값이 있어야합니다. 코드를 살펴봅시다. arr는 우리가 정렬해야 할 배열이며, 1부터 7까지 정렬되지 않은 상태로 존재합니다. arr의 크기는 7이고 인덱스는 0부터 6까지 입니다. (external for loop) 외부에 있는 for 루프는 최솟값이 놓일 인덱스를 위해 사용합니다. (internal for loop) 내부에 있는 for ..
WeatherAPI를 사용하는데 JSON에 timezone이 주어졌다. 나는 timezone을 가지고 현지 시간을 알아야 하는데 어떻게 해야 할지 감이 안잡혔다. timezone이 애초에 뭔지 모름. 그렇게 해서 찾게 된 timezone의 개념. timezone(시간대)은 영국의 그리니치 천문대를 기준으로 지역에 따른 시간의 차이이다. 지구의 자전에 따른 지역 사이에 생기는 낮과 밤의 차이를 인위적으로 조정하기 위해 고안된 시간의 구분선을 일컫는다. 시간대는 UTC를 기준으로한 상대적인 차이로 나타낸다. 아 그럼 나는 해당 지역의 시간 차이를 가지고 해당 지역의 시간대를 알수 있는거구나. 그럼 시간대 차이는 어떻게 되는거지 🤷♀️ 아래가 세계 시간대 차이를 나타낸 이미지다. 왼쪽 세계지도 아래에 나..
스택은 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO)로 되어 있습니다. 넣을 땐 Push라고 하고 넣어준 자료를 꺼내는 것을 Pop이라 합니다. iOS에서 스택은 대표적으로 navigation stack이 있습니다. 공식문서에 살펴보면 계층에 대한 드릴 다운 인터페이스를 제공하기 위해 스택으로 관리한다고 나와있습니다. 스택과는 반대대는 개념인 큐를 살펴봅시다. 큐는 먼저 집어 넣은 데이터가 먼저 나오는(FIFO) 구조로 저장하는 형식을 말합니다. iOS에서는 대표적으로 Dispatch Queue가 있겠죠. 비동기식으로 동시에 수행 할 수 있는 손쉬운 방법이죠. 여기까지 스택과 큐의 특징을 살펴봤습니다. 그럼 본론으로 Q. 스택 두개로 어떻게 큐로 만들 수 있을까요 A. 스택 두개를 inB..
Subject 주제(subject)는 옵저버나 Observable처럼 행동하는 ReactiveX의 일부 구현체에서 사용 가능한 일종의 교각 혹은 프록시라고 볼 수 있는데, 그 이유는 주제는 옵저버이기 때문에 하나 이상의 Observable을 구독할 수 있으며 동시에 Observable이기도 하기 때문에 항목들을 하나 하나 거치면서 재배출하고 관찰하며 새로운 항목들을 배출할 수도 있다. 하나의 주제는 하나의 Observable을 구독하면서, (Observable이 "차가운" Observable인 경우 즉, 옵저버가 구독을 시작하기 전까지 항목들의 배출을 지연시키는 Observable일 경우)Observable이 항목들을 배출시키도록 동작시킨다. 그 결과로 인해 원래는 "차가운" Observable이었던 주..
Single - Single은 Obvservable의 한 형태이지만, Observable처럼 존재하지 않는 곳에서부터 무한대까지의 임이의 연속된 값들을 배출하는 것과는 달리, 항상 한 가지 값 또는 오류 알림 둘 중 하나만 배출한다. - Single을 구독할 때는 Observable을 구독할 때 사용하는 세 개의 메서드(onNext, onError, 그리고 onCompleted) 대신 다음의 두 메서드만 사용할 수 있다. - onSuccess - Single은 자신이 배출하는 하나의 값을 이 메서드를 통해 전달한다 - onError - Single은 항목을 배출할 수 없을 때 이 메서드를 통해 Throwable 객체를 전달한다 - Single은 이 메서드 중 하나만 그리고, 한 번만 호출한다. 메서드가 ..
Operators Chaining Operators - 거의 모든 연산자들은 Observable상에서 동작하고 Observable을 리턴한다. - 이 접근 방법은 연산자들을 연달아 호출할 수 있는 연산자 체인을 제공한다. - 연산자 체인에서 각각의 연산자는 이전 연산자가 리턴한 Observable을 기반으로 동작하며 동작에 따라 Observable을 변경한다. - 먼저 실행된 연산자가 리턴한 Observable을 기반으로 다음 연산자가 동작하기 때문에 Observable은 순서대로 실행되야한다. Operators By Category Creating Observables - Create — 직접적인 코드 구현을 통해 옵저버 메서드를 호출하여 Observable을 생성한다 - Defer — 옵저버가 구독하..
Observable - ReactiveX에서 옵저버는 Observable을 구독한다. - 옵저버는 Obervable이 배출하는 하나 또는 연속된 아이템에 반응한다. (concurrent operations을 가능하게 함) Observable이 객체를 배출할 때까지 기다릴 필요 없이 어떤 객체가 배출되면 그 시점을 감시하는 관찰자 옵저버를 통해 배출 알림을 받기 때문이다. Establishing Observers - 일반적인 메소드 호출 흐름 - 메소드를 호출한다. - 메소드가 리턴한 값을 변수에 저장한다. - 결과 값을 가진 변수를 통해 필요한 연산을 처리한다. - 비동기 모델에서의 메소드 호출 흐름 - 비동기 메소드 호출로 결과를 리턴받고 필요한 동작을 처리하는 메소드를 정의한다. - Observabl..
배열에서 중복된 Element를 제거하는 방법에는 여러 방법이 있겠지만 쉬운 방법은 딕셔너리를 활용하는 것 입니다. 간단히 배열을 extension 시켜줍니다. 저기서 주목해줄 건 updateValue가 리턴을 한다는 것입니다. 키가 이미 있으면 OriginalValue를 리턴하고, 키가 없으면 nil을 리턴한다. 예를 들어보겠습니다. array배열에는 1, 4, 4, 4, 5, 1, 3로 1과 4가 중복되네요. 원하는 결과물은 1,4,5,3 즉 중복되는 요소는 제거하고 유니크한 값만 뽑아내고 싶습니다. 먼저 딕셔너리(dict)를 만들어 key와 value를 업데이트해줍니다. key는 각각의 요소 1, 4, 4, 4, 5, 1, 3 가 되겠네요. 앞서 말한 대로 키가 이미 있으면 OriginalValue..
- Total
- Today
- Yesterday
- leetcode
- wwdc
- SWIFT
- Xcode
- objective-c
- ReactiveX
- Algorithm
- 책
- 스위프트
- swift5
- Animation
- ios
- swiftUI
- 애니메이션
- Deep learning
- 스위프트UI
- 머신러닝
- 딥러닝
- rxswift
- RX
- ARC
- 문자열
- objc
- 책 추천
- 독서
- 책 후기
- iOS SwiftUI
- stanford SwiftUI
- string
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |