๋ชฉ๋กํ๋ก๊ทธ๋๋ฐ/Data Structures ์๋ฃ๊ตฌ์กฐ (7)
Bibi's DevLog ๐ค๐
Data Structure in Swift (Queue) - Part 5 swift-algorithm-club/Queue at master · kodecocodes/swift-algorithm-club ์ด ๊ธ์ ์์ ๊ธ๋ค์ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค. Queue ํ ํ๋ ๋๊ธฐ์ด์ ๋ปํ๋ค. ์ฌ๋๋ค์ด ๋ฒ์ค๋ฅผ ํ๊ธฐ ์ํด ์ค์ ์ ๊ฒ์ ์๊ฐํ๋ฉด ๋๋ค - ๋จผ์ ์ค์ ์ ์ฌ๋๋ถํฐ ์์๋๋ก ๋ฒ์ค์ ํ๋ค. ์ ํ ์๋ฃ๊ตฌ์กฐ ์ฝ์ ๋ฐ ์ญ์ : ์ ์ ์ ์ถ, ์ฆ FIFO(First In, First Out)๋ก ๋์ํ๋ค. ์คํ๊ณผ์ ์ฐจ์ด์ : ํ๋ ๊ฐ์ฅ ์์ ์ ๋ค์ด์จ ๊ฒ๋ถํฐ ์ญ์ ํ๊ณ , ์คํ์ ๊ฐ์ฅ ์ต๊ทผ์ ๋ค์ด์จ ๊ฒ๋ถํฐ ์ญ์ ํ๋ค. Queue์ ์ฐ์ฐ์ Enqueue : ๋งจ ๋ค์ ์ ์์ ์ฝ์ Dequeue : ๋งจ ์์ ์์ ์ญ์ Front..
Data Structure in Swift (Stack) - Part 3 Swift Algorithm Club: Swift Stack Data Structure ์ด ๊ธ์ ์์ ๋ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด์ ๋ฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์คํ Stack ์คํ์ ์์๋ฅผ ์ ํ(linear)์ผ๋ก ์ ๋ฆฌํ๊ฒ ํด ์ฃผ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ์คํ์ ๊ธฐ๋ณธ์ ์ผ๋ก LIFO(Last In First Out) ๋งค์ปค๋์ฆ์ ํตํด ์์๋ฅผ ์ฝ์ ํ๊ณ ์ญ์ ํฉ๋๋ค. ์ด๋ ๊ฐ์ฅ ๋์ค์ ๋ํด์ง ์์๊ฐ ๊ฐ์ฅ ๋จผ์ ์ญ์ ๋จ์ ์๋ฏธํฉ๋๋ค. ์คํ์ ์ฐ์ฐ ์คํ์ ๊ต์ฅํ ํ์ ๋ ๋ฒ์์ ์ฐ์ฐ์ ์ ๊ณตํ๋ค. push() : O(1). ์คํ์ ์๋ก์ด ์์๋ฅผ ์ฝ์ ํ๋ ์ฐ์ฐ pop() : O(1). ์คํ์ ๋งจ ์์ ์์๋ฅผ ์ญ์ ํ๋ ์ฐ์ฐ peek() : ์คํ์ ๋งจ ์์ ์์๊ฐ ๋ฌด์์ธ์ง ..
Data Structure in Swift (Linked List) - Part 2 ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ฌธ์๋ฅผ ๋ฒ์ญํด ์ ๋ฆฌํ ๋ฌธ์์ด๋ฉฐ, Data Structures & Algorithms in Swift, Chapter 6: Linked List ์ด ๋ฌธ์๋ฅผ ํจ๊ป ์ฐธ์กฐํ์ต๋๋ค. Linked List ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ ธ๋๋ฅผ ๊ธฐ๋ณธ ๋จ์๋ก ํ๋ ์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ. ๋ ธ๋ : ๋ฐ์ดํฐ + ํฌ์ธํฐ ๋ฐ์ดํฐ : ํด๋น ๋ ธ๋์ ์ ์ฅ๋ ๊ฐ ํฌ์ธํฐ : ๋ค์ ๋ ธ๋์ ์์น์ ๋ํ ์ฐธ์กฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐ์์ ์ผ๋ก ์ ์ฅ๋์ง ์๋๋ค. ๋ฐฐ์ด์ฒ๋ผ, ์๋ธ์คํฌ๋ฆฝํธ๋ก ์์์ ์์์ ๊ทผํ ์ ์๋ค. (list[0] - ๋ถ๊ฐ๋ฅ) ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ์๋ค Singly Linked List ๋จ๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ) ๊ฐ ํญ๋ชฉ์ด ๋ค์ ๋ ธ๋์ ๋ํ ..
Apple Developer Documentation Data Structure in Swift (iOS) - Part 1 ์ ๋ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ์์ฑํ์ต๋๋ค. Dictionary ๋์ ๋๋ฆฌ : ํค-๊ฐ ์์ ์์๋ก ๊ฐ๋ ์ปฌ๋ ์ . @frozen struct Dictionary where Key : Hashable ์๊ฐ ๋์ ๋๋ฆฌ๋ ํด์ ํ ์ด๋ธ์ ์ผ์ข ์ด๋ค. (๋ค๋ฅธ ์ธ์ด์์๋ hashes ๋ associated arrays๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค) ํญ๋ชฉ๋ค์ ๋ํ ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค ๋์ ๋๋ฆฌ์ ๊ฐ ํญ๋ชฉ์ ํคkey๋ฅผ ํตํด ๊ตฌ๋ณ๋๋ฉฐ, ํค์ ์์ํ๋ ๊ฐvalue์ ๊ฐ์ง๋ค. ํค๋ hashableํ ํ์ ์ด์ด์ผ ํ๋ค. Hashable ํ๋กํ ์ฝ์ ์ค์ํ๋ ๋ชจ๋ ํ์ ์ ํค๊ฐ ๋ ์ ์๋ค. ํค๋ ์์ํ๋ ๊ฐ์ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ๊ฐ์ ์ด๋ค..
Apple Developer Documentation https://nitinagam17.medium.com/data-structure-in-swift-ios-part-1-305dd33e19f5 ์์ ๋ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ฆฌํ์ต๋๋ค. Array ๋ฐฐ์ด : ์์๊ฐ ์๊ณ ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ปฌ๋ ์ (๊ฐ์ ๋ชจ์). ๊ฐ์ฅ ํํ๊ฒ ์ฐ๋ ๋ฐ์ดํฐ ํ์ ์ด๋ค. Array An ordered, random-access collection. @frozen struct Array Array : ๋จ์ผ ํ์ ์ ์์๋ค์ ๋ด์ Element : Array ๋ด๋ถ์ ์์์ ํ์ ์์ฑ let nameArray = ["Alex", "Martin", "Harry"] let oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]..
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ์์๊ฐ ๋ ธ๋๋ก ๋์ด ์๋ ์ฐ์๋ ๋ฐ์ดํฐ๋ค์ด๋ค. node ๋ ธ๋ : ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํ๋์ ์์๋ฅผ ๋งํจ head : ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์ ๋ ธ๋๋ฅผ ์ฐธ์กฐํ๋ ํฌ์ธํฐ tail : ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ๋ ธ๋๋ฅผ ์ฐธ์กฐํ๋ ํฌ์ธํฐ ์ ํ ๋จ๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ singly linked list : ๊ฐ ํญ๋ชฉ์ด ๋ค์ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ๋ง ๊ฐ์ง ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ doubly linked list : ๊ฐ ํญ๋ชฉ์ด ์, ๋ค ๋ ธ๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ชจ๋ ๊ฐ์ง ๋จ๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ตฌํํ๊ธฐ (Swift) https://www.raywenderlich.com/books/data-structures-algorithms-in-swift/v3.0/chapters/6-linked-list ํ๋กํ ์ฝ ์ฑํํ๋ ๋ถ๋ถ ์ด์ ๊น์ง ์ ๋ฆฌํ์ต..
์ฐธ๊ณ ๋งํฌ [์ฝ๋ฉํ ์คํธ ๋๋น] ์์ด(Permutation)๊ณผ ์กฐํฉ(Combination) ์๊ณ ๋ฆฌ์ฆ ์์ด ๊ตฌํํ๊ธฐ Permutation /// ์์ด permutation // ๊ธธ์ด๊ฐ n์ธ ๋ฐฐ์ด์์ r๊ฐ์ ์์๋ฅผ ์ฐจ๋ก๋๋ก ๋ฝ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ ๋ค. // ๋ฐ๋ณต๋ฌธ : for๋ฌธ์ r๋ฒ ์ค์ฒฉ - i, j, k์ ์ค๋ณต์ ๋ฐฐ์ ํ๋ค func permutation() { // (n = 4, r = 3)๊ธธ์ด 4์ธ ๋ฐฐ์ด์์ 3๊ฐ์ ์์ ๋ฝ๊ธฐ let array = [1, 2, 3, 4] var answer: [[Int]] = [] for i in array.indices { // r๋ฒ ์ค์ฒฉ for j in array.indices { for k in array.indices { if (i == j || j == k || k ..