본문 바로가기

전체 글31

Insertion Sort Swift 오늘은 Insertion Sort 를 Swift 로 간단하게 구현해보도록 하겠습니다. 시간복잡도는 O(n^2) 으로 최적화된 정렬은 아닙니다만, 가장 간단하게 구현할 수 있는 정렬 중 하나라고 할 수 있겠습니다. func insertionSort(_ arr: [Int]) -> [Int] { // O(n^2) var a = arr for i in 1.. 0 && a[j] [Int] { // O(n^2) var a = arr for var i in 1.. 0 && a[i] < a[.. 2020. 3. 24.
Swift 로 알아보는 객체지향 프로그래밍 - 2 전 시간에서는 객체 지향의 기본 요소들에 대해 알아보았는데요. 이번 시간에는 객체 지향의 핵심 개념! 에 대해서 알아보도록 하겠습니다. 1. 캡슐화 (Encapsulation) 2. 상속 (Inheritance) 3. 다형성 (Polymorphism) 먼저 캡슐화에 대해서 알아보겠습니다. 캡슐화는 말 그대로 객체를 하나의 캡슐로 만들어서 내부에 있는 것들을 보호할 수 있게 하는 것이라고 보시면 되겠습니다. 즉 내부에 있는 것들에 직접적으로 접근할 때 일어날 수 있는 예외적인 사항들을 제거하기 위해 접근을 인위적으로 제어하는 것이라고 보시면 편하실 듯 합니다. 이를 위해 접근제한자들을 프로퍼티 앞에다가 지정해두는데, 이 부분은 다음 시간에 자세하게 알아보도록 하겠습니다. 두번째는 상속인데요. 상속은 제가 .. 2020. 2. 19.
Swift 로 알아보는 객체지향 프로그래밍 - 1 실무를 하면서 흘러가는 시간에 몸을 맡기다 보면 어느샌가 기본 개념들이 가물가물해지는 경우가 있습니다. 그런고로 오늘은 프로그래밍의 기초부터 한번 살펴보려고 합니다. 예제코드는 Swift5 로 모두 작성되니 이 부분은 참고 부탁드립니다. 객체지향 프로그래밍(Object-Oriented Programming) 이란, 과거의 절차형 프로그래밍과는 달리 프로그래밍을 명령어의 목록으로 바라보는 것이 아니라, 여러개의 독립된 단위인 객체들의 모임으로 생각하는 것입니다. 즉 객체들이 서로 데이터를 주고 받고, 통신을 하면서 이 모임이 하나의 프로그램이 되는 것이라고 보시면 될 것 같습니다. 객체 지향의 기본 구성 요소는 아래와 같습니다. 1. 클래스(Class)2. 객체(Object)3. 메서드(Method) 클래.. 2020. 2. 7.
API 를 여러개 호출해야할때 모든 API 가 호출되었음을 확인하려면? 서버 개발자 분이 친절하게 한가지 API 에 모든 데이터를 다 파싱해서 넘겨주시는 경우도 있지만, 사실 그렇지 않은 경우가 많죠? 그럴때는 간단하게 Dispatch Group 을 사용하면 됩니다. 검색 결과를 받아오는 API 인데, 이게 호출하는 부분이 두개인 경우가 있다면 어떻게 처리해야 할까요? 바로 예시로 들어가겠습니다. let queryString = "아이유" let networkQueue = DispatchQueue(label: "network", qos: .background, attributes: .concurrent) let networkGroup = DispatchGroup() networkGroup.enter() API.shared.get(.blog, comp: queryString).. 2020. 2. 3.