Combine 뽀개기 3장: Subject
·
Swift
Subject A publisher that exposes a method for outside callers to publish elements. 외부 호출자가 요소를 게시할 수 있도록 메서드를 노출하는 게시자입니다. Subject또한 프로토콜이다. Subject도 쉽게 생각하면, publisher의 한 종류이다. protocol Subject : AnyObject, Publisher 왜냐하면, Subject 또한 publisher를 채택받고 있기 때문이다. 자그럼 둘은 무슨 차이냐! 일반 publisher 같은 경우 선언과 동시에 방출될 값이 정해진다. 예를 들어, Just 같은 경우에도 let justPublisher = Just("Combine 첫 교시") 정해진 "Combine 첫 교시"라는 값..
Combine 뽀개기 2장: Subscriber
·
Swift
Subscriber A protocol that declares a type that can receive input from a publisher. 게시자로부터 입력을 받을 수 있는 형식을 선언하는 프로토콜입니다. Subscriber는 공식문서에도 쓰여있듯 프로토콜 Subscriber를 채택받은 타입은 Publisher로 부터 방출된 값을 받을 수 있는 녀셕이 된다. 코드로 보면, class CustemSubscriber: Subscriber { typealias Input = String typealias Failure = Never func receive(subscription: Subscription) { print("구독 시작") subscription.request(.max(1)) } func..
Combine 뽀개기 1장: Publisher
·
Swift
Publisher Declares that a type can transmit a sequence of values over time. 형식이 시간이 지남에 따라 값 시퀀스를 전송할 수 있음을 선언합니다. Publisher는 하나 이상의 Subscriber 인스턴스에게 Element를 전달한다. 쉬운 말로 값을 방출하는 녀셕!!! 또한 Publisher는 프로토콜이다. 내부엔 Output, Failure, receive(subscriber:)를 필수로 구현해야 한다. 하나씩 보면, Output: Publisher 객체가 내보낼 값의 타입 Failure: Error가 발생했을 때 Error 타입(Error를 방출하고 싶지 않으면, Never로 설정) receive(subscriber:): Publisher..
[완전 탐색] 백준 실버4 1018번: 체스판 다시 칠하기(Swift)
·
코테
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이과정 위 문제는 검정색(B)과 흰색(W)이 무작위로 색칠되어 있는 체스판을 8x8로 잘라 올바르게 다시 색을 칠할 때 칠해야 하는 정사각형의 최소 개수를 출력하는 문제이다. 위 조건에 올바른 체스판의 경우는 두 가지이다. 왼쪽 상단이 W로 시작하는 체스판과 B로 시작하는 체스판이다. 두 올바른 체스판과 임의로 잘라낸 8x8의 체스판과 비교하여 색이 다른 정사각형의 수를 찾으면 된다. l..
[구현] 백준 실버3 2503번: 숫자 야구(Swift)
·
코테
https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 문제 풀이 위 문제는 영수의 질문 결과를 통해 조건에 만족하는 수의 개수를 찾아 출력하는 문제이다. 먼저, 입력값과 탐색 값을 비교하여 스트라이크와 볼의 스코어를 계산하는 메서드를 구현해 준다. func checkScore(_ target: [Character], _ num: [Character]) -> (Int, Int) { var sScoer = 0 var bScoer = 0 for i in ..
[구현 + BFS] 백준 골드3 16236번: 아기 상어(Swift)
·
코테
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이과정 해당 문제는 상어가 먹이를 찾아 먹는 과정에서 이동 거리(시간)을 계산하는 문제이다. 상어가 이동할 수 있는 조건은 물고기가 없는 빈칸(0)이거나 자신보다 사이즈가 같거나 작아야 한다. 또한 먹이는 자신보다 작은 물고기만 먹을 수 있으며, 가까운 순서로 먹는다. 만약 거리가 같은 물고기가 둘 이상이 있다면, 먼저 가장 위에 있는 물고기 그중에서 가장 왼쪽에 있는 물고기를 우선으로 ..