분류 전체보기

    RxSwift(6). Disposables

    Observable.from([1, 2, 3]) .subscribe(onNext: {elem in print("Next", elem) }, onError: {error in print("Error", error) }, onCompleted: { print("Completed") }, onDisposed: { print("Disposed") }) //Next 1 //Next 2 //Next 3 //Completed //Disposed Next, Error, Completed는 모두 학습한 Event들이다. Disposed는 Observable이 전달하는 Event는 아니다. 파라미터로 클로저를 전달하면 Observable과 관련된 모든 리소스들이 제거된 뒤에 호출된다. 리소스가 해제되는 시점에 어떤 코드를..

    RxSwift(5). infallible

    infallible 1. 절대 보증할 수 있는 2. 결코 틀리지 않은 3. 절대 옳은 Observale는 3가지 Event를 방출한다 Next, Error, Completed Completed와 Next는 성공으로 분류하고 Error는 실패로 분류한다 infallible은 새로운 형태의 Observale이다. infallible의 의미와 Observale을 결합해보면 알 수 있다. infallible은 Next와 Completed만을 방출한다. enum MyError: Error { case unknown } let observable = Observable.create { observer in observer.onNext("Hello") observer.onNext("Observable") //obse..

    RxSwift(4). Observer

    Observable.create { (observer) -> Disposable in observer.on(.next(0)) observer.onNext(1) observer.onCompleted() return Disposables.create() } .take(1) Observable.from([1, 2, 3]) create로 만들어진 Observable은 2개의 정수를 방출하고 종료된다. 하지만 이상태에선 어떤 이벤트도 전달되지 않는다. 단순히 Observable이 생성되어 있는 상태이다. 이렇게 만들어진 Observable에서 연산자를 호출하더라도 Event는 전달되지 않는다. 이 코드 역시 Event가 구독자에게 전달되는 방식을 정의할 뿐이다. 실제로 Event가 전달되는 시점은 Observer..

    RxSwift(3). Observables과 Observable의 생성(create, from)

    Observable은 Observable Sequence 또는 Sequence라고 부르기도 한다. RxSwift에선 모두 Observable을 나타내는 용어로 쓰인다. Observable은 Event를 전달한다. Observer는 Observable을 감시하고 있다가 전달되는 Event들을 처리한다. Observer가 Observable을 감시한다는 것은 Observer가 Observable을 구독(Subscribe)한다고 한다. 그래서 Observer를 구독자(Subscriber)라고 부르기도 한다. Observable은 3가지 Event를 전달한다. Next Event Observable에서 새롭게 발생된 Event는 Next Event를 통해서 구독자에게 전달된다. Event에 값이 포함되어 있다면..

    RxSwift(2). ReactiveProgramming, 반응형 프로그래밍

    명령형 코드와 RxSwift로 작성한 반응형 코드를 작성해본다 RxSwift를 사용하지 않고 코드를 구현했다면 명령형 프로그래밍 패러다임으로 작성했을 것이다. 아주 단순한 코드를 작성해본다 var a = 41 var b = 52 a + b9 a = 1217 a에 저장된 값을 변경해도 a + b의 값은 변하지 않는다. a + b연산이 실행 될 때는 이 시점에 a와 b에 저장된 값을 사용해서 결과를 도출한다. 만약 a나 b에 저장된 값이 바뀔 때 마다 계산을 다시 실행하도록 구현하고싶다면? 명령형 코드에서 구현하는 것이 불가능하지 않지만 상대적으로 복잡한 코드를 작성해야한다. 반면 RxSwift로 작성한다면? 값이나 상태의 변화에 따라 새로운 결과를 도출해 내는 코드를 비교적 쉽게 구현할 수 있다. 이런 프..

    RxSwift(1). RxSwift 장점, 설치

    RxSwift는 ReactiveX라이브러리를 Swift 언어로 구현해 놓은 것. https://github.com/ReactiveX/RxSwift GitHub - ReactiveX/RxSwift: Reactive Programming in Swift Reactive Programming in Swift. Contribute to ReactiveX/RxSwift development by creating an account on GitHub. github.com RxSwift의 장점과 사용하는 이유 간단한 샘플 코드를 제공하는데, 기존코드에 비해 얼마나 단순해 지는지를 비교해본다. 첫 번째 코드 Observable.combineLatest(firstName.rx.text, lastName.rx.text) ..

    프로그래머스 - 두 큐 합 같게 만들기 Swift

    https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 만들어야 하는 sum의 값은 (queue1 + queue2) / 2 만약 (queue1 + queue2) % 2 != 0, 즉 홀수라면 각 배열에 0.5씩 있어야 하므로 정수 배열에선 만들 수 없다. 배열을 하나로 두고, 좌 우 포인터를 이용한다. 초기의 queue1의 sum 값을 갖고 시작하게 되는데, 만약 sum < target 이라면 right을 1증가시키키고 sum에 더..

    프로그래머스 - 롤케이크 자르기Swift

    https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 및 소스코드 1 ≤ topping의 길이 ≤ 1,000,000이다. 문자열을 배열로 잘라서 크기를 count해나간다..면 시간이초과가 뜰 것 같다. 처음엔 한쪽에 케이크를 몰아주고 하나씩 옮겨 나가는 식으로 풀어야 한다.(✧ㅏ 닐수도..?) 딕셔너리를 생성해 일단 개수와 토핑을 count 한다. [1, 2, 1, 3, 1, 4, 1, 2] 라면 처음엔 형 = [1: 4, 2: 2, 3: 1..

    프로그래머스 - [카카오 인턴] 수식 최대화Swift (DFS, 구현)

    https://school.programmers.co.kr/learn/courses/30/lessons/67257 풀이 및 소스코드 원래의 우선순위는 당연히 *, / -> -+이다 식은 그대로 두고, 이 우선순위를 바꿔가며 계산을 해나가는데 +를 먼저하냐, *를 먼저하냐, -를 먼저하냐의 문제. DFS까진 사용할 필요 없지만 DFS으로 *-+의 순열을 만들어서 순열이 만들어 지면 앞에있는 순서대로 우선순위를 정해 계산해 나갔다. oprator는 3종류다 따라서 3번 반복하게 될거고, op의 순서마다 배열에서 op가 사라질 때 까지 반복해나간다. idx 에 op가 위치한다면 (idx-1...idx+1) 의 위치를 (idx-1 op idx+1)로 변경해주었다. exp.replaceSubrange(i-1.....

    프로그래머스 - [3차] 방금그곡 Swift(치환, 정렬, 구현)

    방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, 라디오 등에서 나온 음악에 관해 제목 등의 정보를 제공하는 서비스이다. 네오는 자신이 기억한 멜로디를 가지고 방금그곡을 이용해 음악을 찾는다. 그런데 라디오 방송에서는 한 음악을 반복해서 재생할 때도 있어서 네오가 기억하고 있는 멜로디는 음악 끝부분과 처음 부분이 이어서 재생된 멜로디일 수도 있다. 반대로, 한 음악을 중간에 끊을 경우 원본 음악에는 네오가 기억한 멜로디가 들어있다 해도 그 곡이 네오가 들은 곡이 아닐 수도 있다. 그렇기 때문에 네오는 기억한 멜로디를 재생 시간과 제공된 악보를 직접 보면서 비교하려고 ..