swift
-
Dynamic Programming (with Fibonacci sequence(using Swift and Cache))DataStructure + Algorithm/Basic Theories 2021. 10. 19. 17:44
안녕하세요, 오늘은 Dynamic Programming 에 대해서 다루고자 합니다. Dynamic Programming 에서는 Divide & Conquer 과 같이 덩어리를 조각조각 내어 해를 구합니다. 하지만 둘 사이 가장 다른 점은 그 조각조각의 연관성이라 할 수 있겠습니다. 나눈 것들이 서로 관련이 전혀 없을 때 Divide & Conquer 을, 관련이 있어서 이전에 구한 값을 활용하면서 해를 구할 때 Dynamic Programming 을 활용한다고 할 수 있겠습니다. 나눈 부분들이 서로 관련이 있는데도 Divide & Conquer 방식으로 해결하고자 하면 Dynamic Programming 방식보다 더 비효율적일 가능성이 매우 높겠죠 ? 이번 글에서는 Fibonacci Sequence 를 ..
-
LinkedListDataStructure + Algorithm/Basic Theories 2021. 10. 13. 13:05
Linked List Linked Lists 는 Singly Linked List, Doubly Linked List 두개로 나뉘어요. Linked List 는 우선, List 가 Linked 되어있는... 형태의 Data Structure 입니다. 다시 말하면, 여러개의 요소들 (List) 이 서로 연결되어있는 (Linked) 모양의 띠어요. Singly Linked List Singly Linked List 부터 설명드리면, 가장 앞에 있는 element 는 head 라고 부르고, 이 head 는 값과 다음 값을 가리키는 pointer 를 갖습니다. 만약 다음 값이 없다면 pointer 는 null (Swift 내에서는 nil ) 값을 가지겠지요. 반대로 가장 뒤에 있는 element 는 tail 이..
-
Swift Tips and Tricks - .enumerated()Swift/Tips & Tricks 2021. 10. 12. 13:21
Swift 에서 for statement 내에 종종 .enumerated() 가 쓰일 때가 있어요. ( enumerate: 열거하다, 세다 ) 먼저, 예시부터 드릴게요 ! let names = ["james", "kelvin", "katherine"] for (idx, name) in names.enumerated() { print("idx: \(idx), name: \(name)") } //idx: 0, name: james //idx: 1, name: kelvin //idx: 2, name: katherine 주로 위 예시와 같이 index 와 함께 사용합니다. Syntax 는 위와 같이 (index, element) 로 써주시면 편해요! 이제, option + click 설명과 함께 알아보아요. S..
-
Swift Tips & Tricks) Pattern matching operator ~=Swift/Tips & Tricks 2021. 10. 12. 00:45
Pattern matching operator ~= 어떤 값이 어떠한 범위에 포함되어있는지에 대해서 조건을 입력할 때는 보통 if 문 안에 conditions 두개를 && 로 연결해서 사용했었는데요, if number >= 0 && number Void) { guard let url = URL(string: "someURL") else { print("cannot create url") return } var request = URLRequest(url: url) request.httpMethod = "GET" URLSession.shared.dataTask(with: request) { data, response, error in guard error == nil else { print("Error: ..
-
SelectionSort with SwiftDataStructure + Algorithm/Basic Theories 2021. 10. 8. 19:44
Description Selection Sort 는, 배열 차례대로 하나하나 비교해가며 가장 작은 값을 찾은 후, 가장 낮은 인덱스에 있는 수와 바꾸는 방식을 반복하여 정렬을 진행합니다. 아래는 정렬할 array 의 예시입니다. (Bubble Sort 의 경우와 같은 array 를 대상으로 정렬을 진행하겠습니다. [4, 3, 5, 2, 1] 1. 먼저 4 ( 0번째 index ) 을 기준으로 한 후 3와 비교합니다. 기준이 아닌 수가 기준보다 작으므로 3 를 기준으로 삼습니다. 2. 이제, 새로운 기준 3 과 5 를 비교합니다. 기준이 더 작으므로 다음 수로 넘어갑니다. 3. 3과 2 를 비교합니다. 2 가 기준보다 작으므로, 2 를 새로운 기준으로 삼습니다. 4. 2 와 1 을 비교합니다. 1 이 기준..
-
Bubble Sort With SwiftDataStructure + Algorithm/Basic Theories 2021. 10. 8. 00:47
Bubble Sort Bubble Sort는, 앞에서부터 2개씩 element 를 잡아서 정렬하는 방법이에요. 1 ~ 5 까지의 숫자가 임의로 배열에 하나씩 있다고 해볼게요. ( 앞으로 모든 예시는 오름차순을 목표로 정렬하는 것으로 가정할게요 ) [4, 3, 5, 2, 1] 1. 4 과 3 을 비교합니다. 오름차순으로 정렬하는 경우, 4 < 3 이 아니므로 두 element 를 교환합니다. [4, 3, 5, 2, 1] // 1. 4 과 3 을 비교합니다. 오름차순으로 정렬하는 경우, 4 < 3 이 아니므로 두 element 를 교환합니다. [3, 4, 5, 2, 1] // 2. 4 과 5 을 비교합니다. 4 < 5 이므로 교환하지 않습니다. // 3. 5 와 2 를 비교합니다. 5 < 2 가 아니므로 교..
-
Array Sorting AlgorithmsDataStructure + Algorithm/Basic Theories 2021. 10. 8. 00:47
배열을 Sorting 하는 방법에는 Bubble Sort Selection Sort Insertion Sort Merge Sort Quick Sort 등이 있습니다. Bubble, Insertion, Selection Sort는 상대적으로 단순한 정렬 방식이고, Merge, Quick Sort 는 위 Sorting 방법들보다 약간 복잡해요. 우선, 이번 글에서는 각 Sorting 방법의 작동 원리부터 알아보도록 하겠습니다. 1. Bubble Sort Bubble Sort는, 앞에서부터 2개씩 element 를 잡아서 정렬하는 방법이에요. 1 ~ 5 까지의 숫자가 임의로 배열에 하나씩 있다고 해볼게요. ( 앞으로 모든 예시는 오름차순을 목표로 정렬하는 것으로 가정할게요 ) [4, 3, 5, 2, 1] 1...
-
Swift Language) ARC ( Automatic Reference Counting)Swift/Swift Language 2021. 10. 4. 20:47
Swift uses Automatic Reference Counting (ARC) to track and manage your app’s memory usage. In most cases, this means that memory management “just works” in Swift, and you don’t need to think about memory management yourself. ARC automatically frees up the memory used by class instances when those instances are no longer needed. 예전에 위 bold 처리된 부분을 읽고 (메모리 관리가 Swift 에서는 그냥 되기 때문에 신경쓰지 않아도 된다. ) 해당..