ํธ๋ฆฌ (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๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ๊ฐ์ด ์ฌ์ฉํด์ฃผ์ด..