๋ชฉ๋กํ”„๋กœ๊ทธ๋ž˜๋ฐ/Data Structures ์ž๋ฃŒ๊ตฌ์กฐ (7)

Bibi's DevLog ๐Ÿค“๐ŸŽ

[Swift ์ž๋ฃŒ๊ตฌ์กฐ] 5. Queue ํ

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..

[Swift ์ž๋ฃŒ๊ตฌ์กฐ] 4. Stack ์Šคํƒ (๋ฐฐ์—ด/์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ)

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() : ์Šคํƒ์˜ ๋งจ ์œ„์˜ ์š”์†Œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ..

[Swift ์ž๋ฃŒ๊ตฌ์กฐ] 3. Linked List ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Singly Linked List)

Data Structure in Swift (Linked List) - Part 2 ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„ ๋ฌธ์„œ๋ฅผ ๋ฒˆ์—ญํ•ด ์ •๋ฆฌํ•œ ๋ฌธ์„œ์ด๋ฉฐ, Data Structures & Algorithms in Swift, Chapter 6: Linked List ์ด ๋ฌธ์„œ๋ฅผ ํ•จ๊ป˜ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. Linked List ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋…ธ๋“œ๋ฅผ ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ ํ•˜๋Š” ์„ ํ˜• ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ. ๋…ธ๋“œ : ๋ฐ์ดํ„ฐ + ํฌ์ธํ„ฐ ๋ฐ์ดํ„ฐ : ํ•ด๋‹น ๋…ธ๋“œ์— ์ €์žฅ๋œ ๊ฐ’ ํฌ์ธํ„ฐ : ๋‹ค์Œ ๋…ธ๋“œ์˜ ์œ„์น˜์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ’ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์—ฐ์†์ ์œผ๋กœ ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ฐฐ์—ด์ฒ˜๋Ÿผ, ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋กœ ์š”์†Œ์— ์ž„์˜์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. (list[0] - ๋ถˆ๊ฐ€๋Šฅ) ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค Singly Linked List ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ) ๊ฐ ํ•ญ๋ชฉ์ด ๋‹ค์Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ..

[Swift ์ž๋ฃŒ๊ตฌ์กฐ] 2. Dictionary ๋”•์…”๋„ˆ๋ฆฌ (์ƒ์„ฑ, CRUD)

Apple Developer Documentation Data Structure in Swift (iOS) - Part 1 ์œ„ ๋‘ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. Dictionary ๋”•์…”๋„ˆ๋ฆฌ : ํ‚ค-๊ฐ’ ์Œ์„ ์š”์†Œ๋กœ ๊ฐ–๋Š” ์ปฌ๋ ‰์…˜. @frozen struct Dictionary where Key : Hashable ์†Œ๊ฐœ ๋”•์…”๋„ˆ๋ฆฌ๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์ผ์ข…์ด๋‹ค. (๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” hashes ๋‚˜ associated arrays๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค) ํ•ญ๋ชฉ๋“ค์— ๋Œ€ํ•œ ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐ ํ•ญ๋ชฉ์€ ํ‚คkey๋ฅผ ํ†ตํ•ด ๊ตฌ๋ณ„๋˜๋ฉฐ, ํ‚ค์— ์ƒ์‘ํ•˜๋Š” ๊ฐ’value์„ ๊ฐ€์ง„๋‹ค. ํ‚ค๋Š” hashableํ•œ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค. Hashable ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๋Š” ๋ชจ๋“  ํƒ€์ž…์€ ํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ํ‚ค๋Š” ์ƒ์‘ํ•˜๋Š” ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐ’์€ ์–ด๋–ค..

[Swift] ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ LinkedList, ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ DoublyLinkedList

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ž€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ ์š”์†Œ๊ฐ€ ๋…ธ๋“œ๋กœ ๋˜์–ด ์žˆ๋Š” ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ๋“ค์ด๋‹ค. 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 ํ”„๋กœํ† ์ฝœ ์ฑ„ํƒํ•˜๋Š” ๋ถ€๋ถ„ ์ด์ „๊นŒ์ง€ ์ •๋ฆฌํ–ˆ์Šต..