![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lcdtm/btrvSARqico/jPPvhvFKplTM8txNU5KLKK/img.jpg)
기본 정렬 구현하기 오랜만에 알고리즘을 보며 기본 정렬(버블 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬)을 구현해봤어요. 알고리즘 풀이를 위해 제가 사용하는 언어인 Python과 iOS 개발을 위해 사용하는 언어인 Swift로 각각 구현했어요. 각 정렬의 시간복잡도나 자세한 정렬 알고리즘을 위한 글이 아니라, 단순히 기본 정렬 알고리즘들을 구현하고 싶은 분들을 위해 코드를 공유해요 :) 제가 구현할 때 했던 생각 정도만 설명으로 추가할게요. 입력되는 배열이 빈 배열인 상황 등은 고려하지 않은 코드예요. 혹시 빈 배열의 입력이 가능한 상황이라면 추가적인 처리가 필요해요 :) 혹시 코드에 미흡한 점이 있거나 더 좋은 코드로 개선 가능한 방향이 있다면 피드백 부탁드려요! 버블 정렬(Bubble So..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ccH1Aj/btrtTNlymxf/YfF4jcZ7PQv8Q5D2oIiYwk/img.jpg)
개요 Swift ARC(Auto Reference Counting)를 보다 잘 이해하기 위해 WWDC21 - ARC in Swift: Basics and beyond를 본 후 글을 정리해 보았어요! Swift는 메모리 관리를 ARC를 통해서 진행하는데요, ARC의 기초 동작 원리부터 이야기해보도록 할게요 :) Object lifetimes and ARC(객체의 수명(?)과 ARC) 객체의 생명 주기는 위와 같아요. 물론 여기서 말하는 객체는 ARC에 의해 관리되는 참조 타입의 객체겠죠? 순서대로 보면(동작 순서는 아니에요!) 1. 객체의 init() 시점에 생명주기가 시작되고 그 객체의 사용이 끝나는 시점에 생명주기가 종료됨 2. ARC가 생명주기가 끝난 객체를 deallocate(할당 해제)함 3. A..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ccQSJj/btrtB9nKYlj/kEFnR5gN0y9opG3qo5hmY1/img.png)
문제 위클리 챌린지 - 모음사전 문제 분석하기 길이 5 이하이므로 사전을 전부 만든 후 검색을 해도 속도에 문제가 없어요. 참고로 사전의 총 길이는 5 + 5^2 + 5^3 + 5^4 + 5^5 가 될 거예요 :) 이 사전을 구현하기 위해 재귀 함수를 사용할 수 있겠지만 파이썬의 모듈인 product를 사용하면 보다 손쉽게 구현할 수 있어요. Product 사용하기 Product는 itertools에서 사용할 수 있어요. itertools에는 Permutation, Combination이 있는데 이것은 순열과 조합이므로 중복을 허락하지 않아요. 이 문제에서는 중복이 필요하기 때문에 Product를 사용해요. 사실 Product는 이름 그대로 product 곱을 위한 모듈이에요. 예시를 살펴볼게요! ite..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/16CcS/btrsUcF4iBU/9HtDOdkqSMfmtdTFoGNlP1/img.jpg)
개요 최근 RxSwift를 하며 비동기에 대한 이런저런 고민을 하다 보니, 최근 진행되었던 WWDC 21의 비동기 관련 세션이 궁금해졌어요 :) 이번 글에서는 영상에서 나온 내용을 정리해볼게요! 해당 세션의 주소는 아래와 같아요 ☺️ WWDC 21 - Meet async/await in Swift 보러 가기 우선 공식 페이지에서 설명하는 세션에 대한 정보를 먼저 읽어볼게요. Swift가 이제 비동기 메서드를 지원하며, 코드를 더 간결하게 사용할 수 있다는 의미예요. 자세한 것은 영상을 보며 살펴볼게요! 동기 / 비동기 세션은 간단하게 동기와 비동기의 차이에 대해 언급하며 시작돼요. preparingThumbnail(of:) 메서드가 완료된 후 fetchThumbnail 메서드가 실행된다고 할 때, 동기적..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/URJtz/btrsrVk6Yt3/fcPVOFItfGOjruouM9cO81/img.jpg)
관련 PR: [#40] 소켓 통신을 통해 받은 데이터로 거래소 화면 CoinListView를 실시간 업데이트해요 개요 현재 Public API를 호출해서 불러온 데이터를 Table로 보여주는 작업은 완료가 되었어요! 이제 Web Socket을 통해 업데이트될 정보를 받아오고, 이 변경할 정보를 Cell에 반영해주면 돼요 :) Web Socket 통신을 위한 기반 작업은 아래 PR에서 완료했어요. [#33] WebSocket 통신을 위한 기반 작업을 해요 소켓 통신을 통해 받아올 데이터 Entity를 만들고, 소켓 통신을 수행할 소켓 매니저를 구현했어요! 업데이트될 정보 관리하기 첫 번째, 소켓 매니저가 실행되는 시점을 정하고 데이터가 각각 어떤 객체를 통해 전달되는지 설계를 할 필요가 있어요. 당연히 업..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ldEDF/btrr1NOKq5o/tWkvrywY3Ld3deiAQvspJ1/img.jpg)
개요 검색어를 통해 코인 정보를 검색할 경우 테이블을 통해 Cell을 보여줘요. 여기서 Cell을 누를 경우 호가 화면으로 넘어가게 구현하려고 해요. 화면을 구체적으로 구현하기 전에 Cell을 클릭하면 넘어갈 화면의 ViewController를 생성하고, 넘어가는 로직을 구현하려고 해요. 설계하기 UIKit으로만 작업한다면 당연히 Delegate을 사용해서 이러한 기능들을 구현하겠지만 현재 프로젝트는 Rx를 사용하는 것을 목표로 하고 있기 때문에 event의 방출을 통해 구현해보려고 해요. 우선 첫 화면인 ExchangeViewController가 로직을 갖는 것이 아니라 ExchangeViewController는 CoinListView를 소유하고 CoinListView에서 Table을 구현하는 구조로 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bKeZbS/btrr05WaQiA/KRKudSgKyL6OcY5T7yXk5k/img.jpg)
안녕하세요! 이번 글의 주제는 Coordinator Pattern이에요! 사실 iOS 관련 주제라고 할 수는 없지만.. 카테고리 선정이 애매해서 iOS에 포함시켰어요 :) 그래서 패턴 자체는 범용적으로 사용할 수 있지만 iOS 상황에서의 Coordinator Pattern에 대해 설명해보려고 해요 ☺️ 왜 사용하는가? 앱 개발 상황을 가정해볼게요. 화면 전환은 매우 자주 일어나는 일인데 일반적으로 각 화면은 독립적인 ViewController를 가지고 있고 ViewController에서 다른 ViewController로 전환될 필요가 있어요. 이때 가장 단순한 방법은 하나의 ViewController의 인스턴스를 직접 생성해주며 화면을 전환시키는 거예요. 예시를 볼게요! // in MainViewCont..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cjjHSt/btrrRecIOtf/EcSBuZUAc0x9IvEM2U6BU0/img.jpg)
관련 PR 보러 가기 - [#19] SearchBar에 검색어를 입력해 검색 결과를 출력해주는 기능을 구현해요 회고 SearchBar에서 검색어를 입력하여 코인을 검색하고, 그 검색 결과를 테이블로 보여주는 기능을 구현했어요. 구현 중에 제공되는 API의 모양이 상황에 따라 통일되어있지 않고 상당히 특이하게 되어 있다는 것을 발견해서 PR이 당초 계획보다 비대해졌어요. 그래서 디테일한 요소들은 TBD로 마킹하고 큰 흐름을 구현하는 것에 포인트를 맞췄어요. 작업하면서 생긴 고민들을 작성해볼게요! API에서 내려받는 데이터에서 발생한 문제 현재 알고 싶은 정보는 API를 통해 검색한 코인 별 정보예요. 우선 호출 URL을 살펴볼게요. https://api.bithumb.com/public/ticker/{or..
- Total
- Today
- Yesterday
- 파이썬알고리즘인터뷰#4장
- Distinct#Codility#Python
- 날짜 계산#BOJ#완전탐색#Python
- Swift#Tuples#Range
- Triangle#Sorting#Codility#Python
- django#slicing
- 터틀비치#리콘#xbox#controller
- 랜선자르기#이분탐색#BOJ#Python
- 순열사이클#BOJ#Python
- 병든 나이트#BOJ#탐욕법#Python
- Brackets#Stacks and Queues#Codility#Python
- 텀 프로젝트#백준알고리즘#Python
- 백준 알고리즘#BackTracking
- filter#isalnum#lower
- 종이자르기#분할정복#BOJ#Python
- 공유기 설치#BOJ#이분탐색#Python
- 미로 탐색#백준알고리즘#Python
- API#lazy#
- 반복수열#백준알고리즘#Python
- PassingCars#Codility#Python
- 나무자르기#BOJ#이분탐색#Python
- 암호코드#dp#BOJ#Python
- 섬의개수#백준알고리즘#Python
- 토마토#백준알고리즘#Python
- 배열합치기#분할정복#BOJ#Python
- django
- N으로 표현#DP#Programmers#Python
- NumberofDiscIntersections#Codility#Sort#Python
- 리모컨#완전탐색#BOJ#Python
- 쿼드트리#BOJ#분할정복#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |