[완전 탐색] 백준 브론즈2 2231번: 분해합(Swift)
·
코테
https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이과정 분해합 문제의 경우 특정수 N에 대하여 생성자를 찾는 문제이다. 생성자 M은 [ M + M의 각 자릿수의 합 = N ] 위 조건을 만족하는 가장 작은 수이다. 위 문제의 경우 1부터 주어진 수 N까지 반복문을 통해 하나씩 대입해도 312ms 시간으로 통과한다. 하지만, 그것이 문제 출제의도는 아닌 것 같아 조건을 통해 시간을 단축시켜 보자. 위에서 언급했듯 생..
[구현 + 시뮬레이션] 백준 2578번: 빙고
·
코테
https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 난이도 실버 4 사용언어 Swift 카테고리 구현 + 시뮬레이션 풀이과정 이중 Int 배열의 빙고판을 만들고, 행, 열, 왼쪽 대각, 오른쪽 대각의 주어진 수를 카운팅 할 수 있는 변수를 만들어 준다. 입력된 수를 빙고판을 통해 좌표를 얻고, 해당 좌표를 통해 행과 열의 변수에 카운팅 한다. 만약, 좌표의 x, y 값이 같거나 둘의 합이 4인 경우 대각의 위치한 수이기 때문에 대각 변수에 추가로 카운팅 한다. ..
[iOS] 한 방향으로 흐르는 ReactorKit 알아보기
·
iOS
안녕하세요. 이번 글에선 반응형 애플리케이션의 데이터 흐름을 단반향으로 만들 수 있게 도와주는 프레임워크 ReactorKit에 대해 알아보겠습니다. ReactorKit의 정의 ReactorKit의 정의는 ReactorKit Github에 설명되어 있었습니다. ReactorKit은 Flux와 Reactive Programming의 조합입니다. 사용자 작업 및 보기 상태는 관찰 가능한 스트림을 통해 각 계층에 전달됩니다. 이러한 스트림은 단방향입니다. 뷰는 작업만 내보낼 수 있고 리액터는 상태만 내보낼 수 있습니다. 위와 같이 ReactorKit은 Flux 아키텍처를 채택하고 있으며, 데이터 흐름이 단 반향으로 흐르는 아키텍처를 Flux라고 칭합니다. 위 이미지와 같이 View에서 Action이 발생하면, ..
[iOS] Clean Architecture 파헤치기
·
iOS
안녕하세요.오늘은 Clean Architecture에 대해 알아보겠습니다.Clean Architecture 란?옛날 소프트웨어를 설계할 때, 많은 부분 하드웨어의 설계 방식을 많이 가져왔다고 합니다.하지만, 하드웨어와 소프트웨어의 가장 큰 차이점은 하드웨어는 한번 설계할 때 완벽히 설계하여 제품 출시 이후 오점이 없어야 합니다. 오점이 있다 하더라도, 이는 수정하기가 힘들죠.하지만, 소프트웨어는 버그가 생기면, 수정하여 다시 출시할 수 있고, 새로운 기능이 필요하다 생각되면, 추가하여 다시 출시할 수 있습니다.정리하면, 하드웨어는 설계 단계부터 완벽해야 하지만, 소프트웨어는 언제든 확장, 수정이 될 수 있도록 유연한 설계가 필요합니다.유연한 소프트웨어 설계를 위해 Clean Architecture와 같은..
[iOS] Coordinator Pattern
·
iOS
안녕하세요. 오늘은 Coordinator Pattern에 대해 알아보겠습니다. 먼저, Coordiantor가 무엇인지 알아보겠습니다. Coordinator 란? iOS를 공부하다 보면, 어느 순간 MVC, MVVM, MVP, VIPER 등 여러 Architecture를 접하게 됩니다. 여기서 MVC-C, MVVM-C 등 뒤에 C가 붙는 것을 보신 적이 있으시다면, C가 Coordinator를 의미하게 됩니다. 또한 Coordinator는 VIPER 패턴의 R(Router)과 같은 역할을 수행합니다. 즉, Coordinator는 화면 간 전환을 담당합니다. 좀 더 자세히는 해당 화면(ViewController)에 필요한 의존성을 주입하고, ViewController 객체를 생성해 화면을 전환하는 역할을 수..
[Swift] Swift Concurrency와 GCD
·
Swift
안녕하세요. 저번 글에서 Race Condition과 Thread Safe에 대해 알아봤었는데 비동기에 대해서 공부하다 보니 자연스럽게 WWDC 2021에서 소개된 Swift Concurrency에 대해서도 관심이 생겼습니다. 그래서 이번 기회에 GCD Swift Concurrency에 대해 간단하게 알아보고 사용법을 정리해 볼까합니다. GCD, Swift Concurrency 란??? GCD 기존 Swift에서 동시성 프로그래밍을 구현하기 위해 단연코 GCD API를 주로 사용했습니다. GCD는 비동기로 실행되고자 하는 코드 블록을 DispatchQueue라는 선입선출 Queue에 넣어 스레드에 작업을 할당하는 방식입니다. GCD는 클로저를 사용해 DispatchWorkItem라는 실행해야 할 작업 객..