그래프 문제에서 자주 출제되는 문제 유형.그래프 유형에서 크루스칼과 플로이드 와샬이 대표적인 그리디 알고리즘크루스칼 → 최소 간선을 싸이클 없이 더해가면서 최소 비용을 찾는과정 (한 정점에서 다른 정점으로 가는 최단거리)플로이드 와샬 → 현재 노드의 최솟값을 지정할 때
RxSwift용 UITableView와 UICollectionView용 라이브러리RxDataSource가 없이, RxSwift 와 RxCocoa 만으로 구현할 경우엔 다음과 같이 구현그러나 여러 Section이 존재할 경우 insert, move, delete시의 애니
스위프트는 순열과 조합을 직접 구현해야 한다.서로 다른 n개의 원소에서 r개를 중복 없이 순서에 상관있게 선택하는 혹은 나열하는 것백트래킹 으로 구현서로 다른 n개의 원소에서 r개를 중복 없이 순서에 상관없이 선택하는 것
Command, 명령 Metal에는 데이터를 제공하고 도형을 그릴 수 있는 메서드나 API가 존재하지 않음 데이터 제공 및 그리기 명령의 실행은 별도의 작업이며 가장 일반적인 유형의 Metal 명령 예시: 몇 개의 점 데이터가 포함된 버퍼가 있고, 선분을 그리려고 한
대부분의 그래픽 API에서는 선을 그리려는 경우 drawLine() 같은 선분을 그리기 위해 호출되는 함수가 있거나 선이 시작하고 끝나는 위치를 지정하는 메서드가 제공됨Metal에는 이러한 API가 존재하지 않음. 대신 선을 그리려면 선의 끝점을 Buffer에 저장한
Metal이란?GPU 프로그래밍을 가능케 하는 프레임워크애플기기에서 개발자가 3D 그래픽을 렌더링하고 GPU에 대한 로우 액세스를 제공하기 위한 프레임워크기존의 OpenGL을 WWDC2018에서 Deprecate시키면서 대체, 더욱 최적화Core Animation의 하
씨밋을 개발하면서 가장 애먹은 부분 중 하나는 약속 신청 화면들이었다. 언뜻? 보면 별거 아닌 화면 같다. 그냥 UISearchBar 이용하고, UITextField, UITextView 이용해서 입력창을 구현하고 각 입력창에 모든 값이 입력되어 있으면 다음 버튼을
29기 SOPT 앱잼을 통해 개발했던 SeeMeet에 대한 후기를 이제서야 올린다.개발은 올해 1월부터 했지만, 본인의 삽질에 대해 오랜 시간이 지나며 사이드 프로젝트화 되어 오랜 기간이 소요되었다 ㅠ개발을 하면서 어려운 점에 대해 정리하여 앞으로 서술하고자 한다.본래
Swift 에는 흥미로운 부분이 있다. 바로 Copy-On-Write, 사실 이것은 스위프트 만의 특징은 아니고 여러 다른 언어들도 가지고 있는 전반적인 특징이다.한 줄로 말하자면, 어떤 값의 복사가 일어날 때, 실제로는 그 값을 복사하는게 아닌 참조한다. 그리고 원본
함수가 일급시민으로서 상수나 변수에 함수참조를 할당할 수 있다. 그리고 이렇게 참조해두고 나중에 원할 때 호출할 수 있고, 다른 함수를 참조하도록 할 수도 있다.프로퍼티도 이와 마찬가지로 값을 바로 꺼내오는 것이 아니라 어떤 프로퍼티의 위치만 참조하도록 할 수 있다.
스위프트에서 리스트를 뒤집는 것은 Swift Standard Library의 .reversed() 를 활용할 수 있다.놀랍게도 이 메서드는 시간복잡도가 O(1)이다. 왜냐하면 이건 lazy이고, 원래 컬렉션을 거꾸로 뒤집는 뷰를 생성하기만 하기 때문이다. 정확히 말하
스택은 한 쪽에서만 자료를 넣고 뺄 수 있는 자료구조이다. 스택의 연산은 LIFO(Last In First Out, 선입선출)을 따른다.스택은 2가지 필수적인 연산이 있다.push: 스택의 최상위에 요소를 추가하는 연산pop: 스택의 최상위의 요소를 제거하는 연산인터페
SwiftUI는 UIKit와 다음과 같은 방법들로 호환시킬 수 있습니다.A UIKit view controller that manages a SwiftUI view hierarchy.SwiftUI 뷰 계층을 관리하는 UIKit의 ViewControllerSwiftUI
접두사로 NS가 붙은 타입은 NSString, NSArray, NSSet, NSDictionary 등등 여러가지가 있다.이들은 NextStep의 줄임말로, 예전 Objective-C 시절의 타입을 일컫는다.구조체로 구현되어 있다.Foundation 프레임워크를 impo
스위프트의 구조체는 여타의 C 기반 언어의 구조체에 비해 훨씬 강력하다. 그런데 클래스는 그러면 언제 사용해야 할까?애플의 Swift Programming Language Guide에서는 다음과 같이 제시하고 있다기본적으로는 구조체를 사용하라. \- Swift의 구조
Raywenderlich 예제를 따라하던 중, NASA 공개 API 데이터를 다운로드하던 중 다음과 같은 오류가 발생했다.The certificate for this server is invalid. You might be connecting to a server th
Prefixing and concatenating startWith(_:) 주어진 인자의 값을 Observable 시퀀스의 접두사로 붙인다. 해당 인자의 타입은 Observable 요소 타입과 동일해야 한다. concat(_:) 2개의 시퀀스를 하나로 합친다.
Observable은 요소들을 하나씩 개별적으로 방출하지만, 이것들을 통합한 컬렉션으로 다루고 싶은 경우가 생긴다.예를 들면, 테이블뷰나 컬렉션뷰의 dataSource로 활용하고 싶은 때가 대표적이다.이런 경우 사용하는 연산자가 toArray이다. toArray 연산자