DataStructure + Algorithm
-
프로그래머스 - 완전탐색 - 카펫 (with Swift)DataStructure + Algorithm/Algorithm 풀이 with Swift 2021. 10. 18. 11:21
문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 ..
-
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 이..
-
Stack, Queue With SwiftDataStructure + Algorithm/Basic Theories 2021. 10. 12. 03:57
Stack 과 Queue 는, 아주아주 흔하게 볼 수 있는 DataStructure 입니다. 둘 사이 가장 다른 점은 데이터가 추가, 추출되는 순서겠지요. Stack 의 경우, 가장 늦게 오는 데이터가 가장 일찍 나가고, (Last In, First Out, LIFO) Stack 에서 사용하는 methods 로는 push(_:), pop() 이 있습니다. Queue 의 경우, 가장 일찍 들어오는 데이터가 가장 일찍 나가는 구조입니다. (First In, First Out, FIFO) Queue 에서 사용하는 methods 로는 enqueue(_:), dequeue() 가 있습니다. Stack Stack 은 말그래도 쌓아두는 구조입니다. 팬케이크를 생각하시면 편할 것 같아요. Stack 에서 쓰이는 met..
-
Insertion Sort with SwiftDataStructure + Algorithm/Basic Theories 2021. 10. 9. 03:30
Insertion Sort 는, 단순한 Sorting Algorithms 중 경우에 따라 비교적 빠를 수 있는 Algorithm 입니다. 특히 대부분이 이미 정렬되어있는 경우 O(n) 까지 빨라질 수 있는데요, 그 원리를 하나하나 알아보겠습니다. Example 1 첫 예시는 다른 Sorting 의 예시들처럼 아래 행렬을 가지고 차례차례 순서를 밟아보겠습니다. [4,3,5,2,1] 1. 첫번째 element 인 4 를 먼저 하나의 상자에 넣습니다. [4] [4, 3, 5, 2, 1] 2. 두번째 element 인 3 과 상자에 있는 수(4) 를 비교합니다. 3이 더 작으므로, 상자 안에 3을 넣을 때 상자의 앞쪽에 넣습니다. [3, 4] [3, 4, 5, 2, 1] 3. 상자 [3, 4] 와 그 다음에 오..
-
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...