๋ฐ˜์‘ํ˜•

Swift ์ž๋ฃŒ๊ตฌ์กฐ 5

[Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ํž™(Heap)

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ํž™ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํž™(Heap)์ด๋ž€? ๋ฐ์ดํ„ฐ์—์„œ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์™„์ „์ด์ง„ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์™„์ „์ด์ง„ํŠธ๋ฆฌ ์•„๋ž˜์˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฑ„์›Œ๊ฐ€๋ฉฐ ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ํž™์˜ ์ข…๋ฅ˜ ์œ„์˜ ์„ค๋ช…์—์„œ ํž™์€ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ํž™์€ ๋‘๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ ํž™ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ํž™์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๊ฐ’์€ ํ•ญ์ƒ ์ตœ๋Œ“๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. ์ตœ์†Œ ํž™ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ์˜ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ํž™์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๊ฐ’์€ ํ•ญ์ƒ ์ตœ์†Ÿ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. ์œ„์˜..

[Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ์ด์ง„ ํƒ์ƒ‰ํŠธ๋ฆฌ ( Binary Search Tree )

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ์ง€๋‚œ ํฌ์ŠคํŒ…(ํ•ด์‹œ ํ…Œ์ด๋ธ”)์— ์ด์–ด์„œ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) [ ํ•ด์‹œ ํ…Œ์ด๋ธ” ํฌ์ŠคํŒ… ] [Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table) ์•ˆ๋…•ํ•˜์„ธ์œ ~ ์˜ค๋Š˜์€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ์ด์–ด์„œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณผ๊นŒํ•ฉ๋‹ˆ๋‹นใ…Žใ…Ž [Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)(1) ์•ˆ๋…•ํ•˜์„ธ์œ ~ ์˜ค๋Š˜์€ ์ €๋ฒˆ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋งํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ pooh-footprints.tistory.com ์ผ๋‹จ, ํŠธ๋ฆฌ๋ถ€ํ„ฐ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ํŠธ๋ฆฌ๋ž€ ๋…ธ๋“œ์™€ ๊ฐ„์„ ์„ ์ด์šฉํ•ด ์‚ฌ์ดํด์„ ์ด๋ฃจ์ง€ ์•Š๋„๋ก ๋งŒ๋“  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์„ ํ˜•์œผ๋กœ Prev์™€ Next๋ฅผ ํ†ตํ•ด ์•ž, ๋’ค์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์ง€๋งŒ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์— ์ž์‹(child)์ด๋ผ๊ณ  ..

[Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ์ด์–ด์„œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) [ LinkedList ํฌ์ŠคํŒ… ] [Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ๋‹จ๋ฐฉํ–ฅ / ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List) ์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ํ์— ์ด์–ด์„œ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) [ Queue ํฌ์ŠคํŒ… ] [Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ํ(Queue) ์•ˆ๋…•ํ•˜์„ธ์œ ~ [Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ์Šคํƒ(Stack) ์•ˆ๋…•ํ•˜์„ธ์œ ~ ์˜ค๋Š˜์€ ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ pooh-footprints.tistory.com ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ (Key, Value)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์ด์šฉํ•ด ์ €์žฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Key๊ฐ’์— ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ด ์ €์žฅํ•  ์ธ๋ฑ์Šค๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฝ์ž…, ์‚ญ์ œ, ์กฐํšŒ ๋“ฑ์ด O(1)์˜ ์‹œ..

[Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ๋‹จ๋ฐฉํ–ฅ / ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ํ์— ์ด์–ด์„œ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) [ Queue ํฌ์ŠคํŒ… ] [Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ํ(Queue) ์•ˆ๋…•ํ•˜์„ธ์œ ~ [Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ์Šคํƒ(Stack) ์•ˆ๋…•ํ•˜์„ธ์œ ~ ์˜ค๋Š˜์€ ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘์—์„œ ์Šคํƒ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค! ์‚ฌ์‹ค ์ด์ „์— ํ•™์Šต์„ ํ–ˆ์ง€๋งŒ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐ€๋ฌผ๊ฐ€๋ฌผํ•ด์ง€๋Š”.. ๊ทธ๋ž˜์„œ C pooh-footprints.tistory.com ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ ๋ฐฐ์—ด๊ณผ ๋น„๊ตํ•˜๋ฉด์„œ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ์ž„์˜ ์ ‘๊ทผ(Random Acess)์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๊ฐ’์— ๋ฐ”๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฝ์ž…, ์‚ญ์ œ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด์„ ์žฌ๋ฐฐ์น˜ํ•ด์•ผ ํ•˜๋Š” ๋กœ์ง์ด ์ถ”๊ฐ€๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ..

[Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ์Šคํƒ(Stack)

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ์Šคํƒ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“๊ณ  ๊บผ๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋กœ ์Šคํƒ์ž…๋‹ˆ๋‹ค. LIFO(Last In First Out)๋กœ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ€๊ฒŒ ๋˜๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ Push๋ผ๊ณ  ํ•˜๊ณ  ๊บผ๋‚ด๋Š” ๊ฒƒ์„ Pop์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค! โœ”๏ธŽ Swift๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๊ธฐ // ์ œ๋„ค๋ฆญ์‚ฌ์šฉ struct Stack { private var stack: [T] = [] // ์Šคํƒ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ public var count: Int { return stack.count } // ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ”„๋กœํผํ‹ฐ public var isEmpty: Bool { return stack.isEmpty } ..

๋ฐ˜์‘ํ˜•