๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

swift230

[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.
[RxSwift] Observable Observable ์ด๋ž€?Observable์€ RxSwift์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ŠคํŠธ๋ฆผ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋งํ•˜์ž๋ฉด, Observable์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐ’์„ ๋ฐฉ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ’๋“ค์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ, ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์‘๋‹ต, ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๋“ฑ ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Observable์€ ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์ด๋ฒคํŠธ๋ฅผ ๋ฐฉ์ถœํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” next, error, completed์ž…๋‹ˆ๋‹ค.nextObservable์ด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์š”์†Œ๋ฅผ ๋ฐฉ์ถœํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.Observable์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ next ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.error์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐฉ์ถœ๋˜๋ฉฐ, ์ดํ›„์—๋Š” ๋” ์ด์ƒ์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.completedObservable์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์š”์†Œ์˜ ๋ฐฉ์ถœ์„ ์™„๋ฃŒ.. 2024. 6. 7.
๋ฐ˜์‘ํ˜•