์๋ฃ๊ตฌ์กฐ14 [Swift] ์ฐ์ ์์ ํ(Priority Queue) ๊ตฌํํ๊ธฐ ์ฐ์ ์์ ํ๋ ์์๊ฐ ์ฝ์ ๋ ๋๋ง๋ค ์ฐ์ ์์์ ๋ฐ๋ผ ์ ๋ ฌ๋๋ฉฐ, ๊ฐ์ฅ ๋์ ์ฐ์ ์์์ ์์๊ฐ ๋จผ์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ด์ ์ ๊ตฌํํ Heap์ ์ฌ์ฉํ์ฌ ์ฐ์ ์์ ํ๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. ์๋๋ PriorityQueue ๊ตฌ์กฐ์ฒด๋ฅผ ์ ๋ค๋ฆญ์ผ๋ก ์ ์ํ ์ฝ๋์ ๋๋ค.struct PriorityQueue { private var heap: Heap var isEmpty: Bool { return heap.isEmpty } var count: Int { return heap.count } var peek: T? { return heap.peek } init(sort: @escaping (T, T) -> Bool) { he.. 2024. 9. 27. [Swift] ํ(Heap) ๊ตฌํํ๊ธฐ Heap์ ํธ๋ฆฌ ๊ธฐ๋ฐ์ ์๋ฃ๊ตฌ์กฐ๋ก, ํน์ ์ฐ์ ์์์ ๋ฐ๋ผ ์์๋ค์ ์ ๋ ฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Heap์ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค. ์ต์ ํ์ ์์ ๊ฐ์ด ๋จผ์ ๋์ค๋๋ก ์ ๋ ฌํ๊ณ , ์ต๋ ํ์ ํฐ ๊ฐ์ด ๋จผ์ ๋์ค๋๋ก ์ ๋ ฌํฉ๋๋ค. ์ ๋ค๋ฆญ์ ์ด์ฉํด Heap ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ๊ณ ์ฃผ์ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.struct Heap { private var elements: [T] = [] private let priorityFunction: (T, T) -> Bool var isEmpty: Bool { return elements.isEmpty } var count: Int { return elements.count } var p.. 2024. 9. 27. [Swift] Dequeue ๊ตฌํํ๊ธฐ Dequeue๋ ์์ชฝ ๋์์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ๋ก, ์ด๋ฅผ ํตํด ํ์ ์คํ์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ํํ ์ ์์ต๋๋ค. Dequeue๋ฅผ ๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด์ ์ด์ฉํด ๊ตฌํํ ์ ์์ต๋๋ค.์ ๋ค๋ฆญ์ ํ์ฉํ์ฌ Dequeue ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ๊ณ , ์ฃผ์ ๊ธฐ๋ฅ๋ค์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค. struct Deque { private var enqueue: [T] = [] // ๋ค์ชฝ์์ ์์๋ฅผ ์ถ๊ฐ/์ ๊ฑฐํ๋ ๋ฐฐ์ด private var dequeue: [T] = [] // ์์ชฝ์์ ์์๋ฅผ ์ถ๊ฐ/์ ๊ฑฐํ๋ ๋ฐฐ์ด var count: Int { return enqueue.count + dequeue.count } var isEmpty: Bool { return enque.. 2024. 9. 27. [Swfit] ํ(Queue) ๊ตฌํํ๊ธฐ Queue๋ฅผ ๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด์ ์ด์ฉํด ๊ตฌํํ ์ ์์ต๋๋ค.๋จผ์ ์ ๋ค๋ฆญ์ ํ์ฉํด Queue ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ๊ณ , ์ฃผ์ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค. struct Queue { private var queue: [T] = [] var isEmpty: Bool { return queue.isEmpty } var count: Int { return queue.count } var peek: T? { return queue.first } mutating func enqueue(_ element: T) { queue.append(element) } mutating func dequeue() .. 2024. 9. 27. [Swift] ์คํ(Stack) ๊ตฌํํ๊ธฐ Stack์ ๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด๋ก ๊ตฌํํ ์ ์์ต๋๋ค.๋จผ์ ์ ๋ค๋ฆญ์ ์ด์ฉํด Stack ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ๊ณ , ์ฃผ์ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค. struct Stack { private var stack: [T] = [] var isEmpty: Bool { return stack.isEmpty } var count: Int { return stack.count } var peek: T? { return stack.last } mutating func push(_ element: T) { stack.append(element) } mutating func pop() -> T? { .. 2024. 9. 27. [์๋ฃ๊ตฌ์กฐ] ํด์ ํ ์ด๋ธ(Hash Table) ํด์ ํ ์ด๋ธ(Hash Table) ํด์ ํ ์ด๋ธ์ (Key, Value)์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ ํด์ํจ์(Hash Function)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํํ ๊ฐ์ index๋ก ์ผ์ ํด์ ํจ์(Hash Function)๋ฅผ ์ฌ์ฉํด Key ๊ฐ์ ์์ธ(index)์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ํด์ฑ(Hashing)์ด๋ผ๊ณ ํจ ๋ํ์ ์ธ ์๋ก ํ์ด์ฌ์ dictionary, ๋ฃจ๋น์ Hash, ์๋ฐ์ Map ๋ฑ์ด ์์ ํด์ ํ ์ด๋ธ์ ํน์ง ๊ธฐ๋ณธ ์ฐ์ฐ์ผ๋ก๋ search, insert, delete๊ฐ ์์ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ key๋ฅผ ํตํด์ value๋ฅผ ์ป์ ์ ์์ => ์ด์งํ์ํธ๋ฆฌ๋ ๋ฐฐ์ด์ ๋นํด ์๋๊ฐ ๋น ๋ฆ ์ปค๋ค๋ ๋ฐ์ดํฐ๋ฅผ ํด์ํด์ ์งง์ ๊ธธ์ด๋ก ์ถ์ฝํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋ ํจ์จ์ value๋ ์ค๋ณต ๊ฐ๋ฅํ.. 2023. 3. 15. ์ด์ 1 2 3 ๋ค์ ๋ฐ์ํ