๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

ํŠธ๋ฆฌ (Tree) ๋…ธ๋“œ(Node)์™€ ๊ฐ„์„ (Edge)๋กœ ์ด๋ฃจ์–ด์ง„ ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ํŠธ๋ฆฌ์˜ ์šฉ์–ด ๊ตฌ๋ถ„ ์„ค๋ช… ๊ฐ„์„ (Edge) ๋‘ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์„ (๋งํฌ) ๋…ธ๋“œ(Node) ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ์›์†Œ ๋ฃจํŠธ ๋…ธ๋“œ(Root) ํŠธ๋ฆฌ์˜ ์ตœ ์ƒ์œ„ ๋…ธ๋“œ ๋ฆฌํ”„ ๋…ธ๋“œ(Leaf) ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ ํ˜•์ œ ๋…ธ๋“œ(Sibling) ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ–๋Š” ๋…ธ๋“œ ๋…ธ๋“œ์˜ ํฌ๊ธฐ(Size) ์ž์‹ ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ ๋…ธ๋“œ์˜ ๊นŠ์ด(depth) ๋ฃจํŠธ์—์„œ ์–ด๋–ค ๋…ธ๋“œ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ๊ฐ„์„ ์˜ ์ˆ˜ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ(Level) ํŠธ๋ฆฌ์˜ ํŠน์ • ๊นŠ์ด๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ์˜ ์ง‘ํ•ฉ ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜(Degree) ๊ฐ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ ๊ฐœ์ˆ˜ ํŠธ๋ฆฌ์˜ ์ฐจ์ˆ˜(Degree of Tree) ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ์ฐจ์ˆ˜ ํŠธ๋ฆฌ์˜ ๋†’์ด(Height) ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ๊ฐ€์žฅ ๊นŠ์ˆ™์ด ์žˆ๋Š” ๋…ธ..
ํ(Queue) ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ๊ฒƒ์ด ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๋Š” FIFO์˜ ํŠน์ง•์„ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ Queue๋Š” ๋’ค(rear)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ (enqueue), ์•ž(front)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค(dequeue). Front: Queue์˜ ๊ฐ€์žฅ ์ฒซ ์›์†Œ Rear: Queue์˜ ๊ฐ€์žฅ ๋ ์›์†Œ removeFirst() Swift์—์„œ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋จธ์ง€ ๋ฐฐ์—ด์˜ ์›์†Œ์˜ ์ž๋ฆฌ๋ฅผ ์ด๋™์‹œ์ผœ ๋นˆ ๊ณต๊ฐ„์„ ์—†์• ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ด ๋œ๋‹ค. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ Queue ๊ตฌํ˜„ํ•˜๊ธฐ Node.swift class Node { let data: T var next: Node? init(data: T, next: Node? = nil) { self.data = ..
์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List) ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์ €์žฅ๋˜์ง€ ์•Š๋Š” ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ ํ•„๋“œ + ๋‹ค์Œ์˜ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ฅผ ํฌํ•จํ•˜๋Š” ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ? ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์–ด ๋ฏธ๋ฆฌ ์š”์†Œ์˜ ์ˆ˜์— ๋Œ€ํ•ด ํ• ๋‹น๋ฐ›์•„์•ผ ํ–ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ์š”์†Œ ์‚ฝ์ž…์˜ ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค. (๊ณต๊ฐ„ ๋งŒ๋“ค๊ธฐ + ๊ธฐ์กด ์š”์†Œ์˜ ์ด๋™) ์žฅ์  ๋™์ ์ธ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ์šฉ์ดํ•˜๊ณ  ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. ๋‹จ์  Random Access๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•ด์•ผํ•œ๋‹ค. ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค. ์ €์žฅ ๊ณต๊ฐ„์˜ ํšจ์œจ์ด ๋†’์ง€ ์•Š๋‹ค. ์ถ”๊ฐ€(add) ๋…ธ๋“œ๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ์—†์„ ๋•Œ head = nil, tail = nil head ๊ฐ’์„ ํ™•์ธ ํ›„ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  tail๋„ ๋™์ผํ•˜๊ฒŒ ..
์Šคํƒ(Stack) ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๊ฒƒ์ด ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๋Š” LIFO์˜ ํŠน์ง•์„ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์‚ฝ์ž…(Push) append() ์‹œ๊ฐ„๋ณต์žก๋„: O(1) ์‚ญ์ œ(Pop) removeLast() ๋˜๋Š” popLast() removeLast(): ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์„ ๋•Œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด popLast(): ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์„ ๋•Œ nil์„ ๋ฐ˜ํ™˜์‹œํ‚ด ์‹œ๊ฐ„๋ณต์žก๋„: O(1) ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ ์กฐํšŒ(Top) last() ์‹œ๊ฐ„๋ณต์žก๋„: O(1) ๊ตฌํ˜„ import Foundation struct Stack { var elements: [T] = [] var count : Int { return elements.count } var isEmpty : Bool { return elements.isEmpty } mutating func pop..
๋ฐฐ๊ฒฝํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ฑ„ํŒ…๋ฐฉ ๋‚ด์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด๋Š” ๊ธฐ๋Šฅ์ด์–ด์„œ ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ ์„ฑ๋Šฅ ์ด์Šˆ๊นŒ์ง€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์ง์ ‘ ๊ฒช์œผ๋ฉด์„œ ํ•ด๊ฒฐํ•œ ๊ณผ์ •์„ ์ ์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์žˆ์–ด ์˜ฌ๋ฐ”๋ฅธ ๋กœ์ง์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ดํ•ดํ–ˆ๊ณ  ์–ด๋–ป๊ฒŒ ์ฑ„ํŒ…๊ฐ™์€ ๋ชจ์Šต์œผ๋กœ ๊ทธ๋Ÿด์‹ธํ•˜๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€์— ๊ด€ํ•ด ์ดˆ์ ์„ ๋งž์ถ”์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์‹œ๊ฐ„์ˆœ์— ๋งž๋Š” ๋ฉ”์‹œ์ง€ ๋ฒ„๋ธ” ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฉ”์‹œ์ง€ ๋ฒ„๋ธ”์ด ์Œ“์ด๋ฉด ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ๋Ÿ‰ ์ค„์ด๊ธฐ์ฑ„ํŒ… ์ƒ๋Œ€๋ฐฉ์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์œผ๋ฉด ์ฝ์Œ ์—ฌ๋ถ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€ ๋ฒ„๋ธ” ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝํ•˜๊ธฐ Firebase์˜ Realtime Database ์‚ฌ์šฉ ์‹œ ๋ฐœ์ƒ๋˜๋Š” ์„ฑ๋Šฅ ์ด์Šˆ์ดˆ๊ธฐ์—๋Š” ๋ง‰์—ฐํ•˜๊ฒŒ ์ฑ„ํŒ…๋ฐฉ์˜ ๋ฐ์ดํ„ฐ๋Š” Firebase์—์„œ ๋ณ„๋„๋กœ Rea..
๋ฐฐ๊ฒฝ ์•ฑ์„ ์ œ์ž‘ํ•˜๋‹ค๋ณด๋ฉด ์ผ๊ด€๋œ ๋””์ž์ธ์œผ๋กœ ์•ฑ์„ ๋””์ž์ธํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์™”์Šต๋‹ˆ๋‹ค. ์•Œ๊ฒŒ ๋ชจ๋ฅด๊ฒŒ ๋ฒ„ํŠผ์ด๋‚˜ TextField ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ผ๊ด€๋˜๊ฒŒ ๋””์ž์ธํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ๋‹ค๊ณ  ๋А๊ผˆ๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž SwiftUI ViewModifier๋Š” ์ปค์Šคํ…€์„ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต์ ์ธ modifier ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ ์ž ์ปค์Šคํ…€ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์˜€๋‹ค. https://developer.apple.com/documentation/swiftui/viewmodifier ViewModifier ๊ตฌ์กฐ์ฒด ๋งŒ๋“ค๊ธฐ ViewModifier ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๋Š” ๊ตฌ์กฐ์ฒด๋ฅผ ๋จผ์ € ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด ์•ˆ์—๋Š” Content ํƒ€์ž…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„ ์™€ some View๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์ฃผ์–ด..
kiuun
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (5 Page)