'How to Implement Linked List' - LBTA (https://www.letsbuildthatapp.com/course_video?id=4292) 영상을 참고하였습니다. 그래프 탐색을 공부하기 위해 BFS, DFS 를 공부하다가 Queue 에 대해 알게 되었고 Queue 를 공부하다가 링크드 리스트를 갑자기 공부하게 되었다. ...뭐지? 아무튼 나의 첫 링크드 리스트, 시작해보자. 이번에 다뤄볼 리스트는 단방향 링크드 리스트이다. 위의 사진에서 네모 한 칸(보라색 + 파란색)을 노드(Node)라 한다. 보라색 네모는 값을 가지고 있는 Data(or Value) 이고 파란색 네모는 다음 노드의 주소를 나타내고 있는 Pointer(포인터 or Next) 이다. 사진에서는 나..
이진탐색에 대해 알아보자. 오랜만에 프랑스어 단어 'incroyable' 를 찾기 위해서 종이사전을 꺼냈다. 여러번 종이 사전으로 단어를 찾아본 경험이 있지 않더라도, 알파벳 순서는 정렬되어있기 때문에 자연스레 사전을 절반으로 갈라서 펼치는 내 자신을 보았다. 아!!! 여기서 나는 이진 탐색(Binary search)을 나도 모르게 하고 있었음을 깨달았다. 위의 에피소드에서 중요한 내용이 나왔다. 바로 이진 탐색을 하기 위해선 주어진 무엇인가가 정렬(사전은 A,B,C,D 순서로..)되어 있어야 한다는 것이다. 쉽게 생각해서 사전이 abcd 순서로 되어있지 않다면 반을 펼치는 것이 무슨 의미가 있겠는가? 펼쳤는데 A가 나온다면... (절레절레) 이러한 이진 탐색은 주어진 배열에 원하는 원소가 있으면 그 원..
퀵 정렬(Quick Sort, 평균적으로 O(nlog n) 의 속도)은 정렬 알고리즘의 한 종류다. O(n²) 의 속도를 나타내는 선택 정렬보다 훨씬 빠르고 실제로도 자주 사용된다. 물론 퀵 정렬도 최악의 경우에는 O(n²) 의 속도를 내지만 그래도 평균과 최악 최선이 O(n²) 인 것 보다 좋지 않은가?? 또한 퀵 정렬을 구현하기 위해서는 분할 정복 전략(divide and conquer)을 사용한다. 뭔가 나눠서 하나씩 내 것으로 만든다는 듯한 느낌을 주는 전략이다. 일단 코드를 보면서 이야기해보자. let sampleArray = [4, 7, 9, 2, 3, 5, 6, 1, 8] func quickSort(array: [Int]) -> [Int] { if array.count < 2 { // 배열이..
앱 스토어 앱 올리기 Index 1탄 (https://atelier-chez-moi.tistory.com/84) 개발자 계정 구매 및 활성화 문제 해결, Failed with exit code 1 해결, 인증서 문제 해결 과정 2탄 (NOW) 앱 스토어 커넥트 둘러보기, 개인정보 처리방침 URL 만들기, TestFlight 에 앱 올리기 3탄 (https://atelier-chez-moi.tistory.com/91?category=1004941) TestFlight 테스터 관리, 스크린샷 피드백, pageSheet 문제 수정, 가로모드 허용 금지 4탄 (https://atelier-chez-moi.tistory.com/93?category=1004941) UserNotification 5탄 (https:..
앱 스토어 앱 올리기 Index 1탄 (NOW) 개발자 계정 구매 및 활성화 문제 해결, Failed with exit code 1 해결, 인증서 문제 해결 과정 2탄 (https://atelier-chez-moi.tistory.com/85) 앱 스토어 커넥트 둘러보기, 개인정보 처리방침 URL 만들기, TestFlight 에 앱 올리기 3탄 (https://atelier-chez-moi.tistory.com/91) TestFlight 테스터 관리, 스크린샷 피드백, pageSheet 문제 수정, 가로모드 허용 금지 4탄 (https://atelier-chez-moi.tistory.com/93) UserNotification 5탄 (https://atelier-chez-moi.tistory.com/94)..
그동안 열심히 개발해온 개인 앱을 앱스토어에 올릴 때가 되었다. 앱을 실 기기에 테스트하기 위해서는 개발자 계정을 구매해야 하기 때문이다. (물론 무료로 테스트하는 방법이 있기는 하다) 또한 대부분의 iOS 개발자를 채용할 시에 앱 스토어에 앱을 올려본 경험이 있는지 물어보는 경우가 많다고 한다. 나도 이러한 경험을 갖추기 위해서 개인 앱을 올려보고자 한다. 일단 이러한 모든 과정의 시작을 위해서는 개발자 프로그램을 등록해보자. 1. developer.apple.com 에 접속한다. 2. 오른쪽 상단 메뉴의 'account' 를 클릭한다. 3. apple ID 와 비밀번호를 입력한다. (중요 : 이 때, 계정에 이중 인증이 설정되어 있어야 한다 !) 4. 다음과 같은 화면에서 'complete your ..
권오흠 교수님의 알고리즘 강좌를 보던 중에 문자열을 받아서 그것을 한 글자씩 Recursion 을 이용해 출력해내는 부분이 있었다. (아래처럼) 아 일단 프로그래밍을 Swift 로 시작했기 때문에 Java 를 전혀 모른다. 그래서 코드를 볼 때마다 새로운 것이 나오면 그것을 다시 구글링해서 어떤 내용인지 찾아보고 다시 Swift 엔 이와 비슷한 것이 무엇인지 찾아봐야하기 때문에 상당한 시간이 걸린다. 아니 그래서 이 하소연을 하는 이유는 이제 나와 같은 문제를 겪지 말았으면 하는 마음에 쓰는 포스팅이라는 것이다. ... 아무튼, 이 코드를 똑같이 구현해보기 위해서 일단 어차피 한 글자씩만 나오면 되는 거니까 다음과 같이 구현하였다. 문자열을 뭐로 넣어줄까 싶다가 갑자기 프렌치 감성으로 Bonjour 를 ..
Source : The Swift Programming Language (Swift 5.1 beta) Generics 에 대해 간단히 알아보도록 하겠습니다. Generic code 는 여러분이 정의한 필요조건에 따라 어떤 타입에서도 작동 가능한 유연하면서도 재사용 가능한 함수와 타입을 작성할 수 있게 해줍니다. 여러분은 중복을 피하고 의도를 명확하고 추상적인 방식으로 표현하는 코드를 작성할 수 있을 겁니다. Generics 는 스위프트의 가장 강력한 기능들 중 하나이며 많은 Swift standard library 가 generic code 로 작성되어 있어요. 사실상 여러분은 제네릭을 사용해 오고 있었어요 다만 알지 못했을 뿐이죠. 예를 들어볼까요? 우리는 Array 와 Dictionary 를 스위프트..
- Total
- Today
- Yesterday
- swiftUI
- fastcampus
- function
- Dictionary
- 패캠
- tca
- 패스트캠퍼스
- 개발스쿨
- Swift
- GCD
- 컨버전
- 리터럴
- 타입
- OOP
- ARC
- 딕셔너리
- ios
- fallthrough
- Operator
- array
- 튜플
- 프로그래밍
- lifecycle
- 깃허브
- var
- 스위프트
- commit
- inswag
- 열거형
- iOS개발스쿨
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |