๋ฐ์ํ
Queue๋ฅผ ๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด์ ์ด์ฉํด ๊ตฌํํ ์ ์์ต๋๋ค.
๋จผ์ ์ ๋ค๋ฆญ์ ํ์ฉํด Queue ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ๊ณ , ์ฃผ์ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
struct Queue<T> {
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() -> T? {
return isEmpty ? nil : queue.removeFirst()
}
}
์ ์ฝ๋์์๋ Queue์ ๊ธฐ๋ณธ ๋์์ ๊ตฌํํ์ต๋๋ค.
- enqueue(_:): ํ์ ๋ค์ ์ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค.
- dequeue(): ํ์ ์์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํฉ๋๋ค. ํ๊ฐ ๋น์ด ์์ผ๋ฉด nil์ ๋ฐํํฉ๋๋ค. ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ๊ฑฐํ ๋ ๋๋จธ์ง ์์๋ค์ ์์ผ๋ก ์ด๋์์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ ๋๋ค.
- peek: ํ์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ๋, ์์๋ฅผ ์ ๊ฑฐํ์ง๋ ์์ต๋๋ค. ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค.
- isEmpty: ํ๊ฐ ๋น์ด ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค.
- count: ํ์ ์๋ ์์์ ๊ฐ์๋ฅผ ๋ฐํํฉ๋๋ค. ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค.
์ด๋ ๊ฒ ๊ตฌํํ Queue๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
var intQueue = Queue<Int>()
intQueue.enqueue(1)
intQueue.enqueue(2)
intQueue.enqueue(3)
print(intQueue.dequeue() ?? 0) // ์ถ๋ ฅ: 1
print(intQueue.peek ?? 0) // ์ถ๋ ฅ: 2
print(intQueue.count) // ์ถ๋ ฅ: 2
print(intQueue.isEmpty) // ์ถ๋ ฅ: false
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ํ(Heap) ๊ตฌํํ๊ธฐ (0) | 2024.09.27 |
---|---|
[Swift] Dequeue ๊ตฌํํ๊ธฐ (0) | 2024.09.27 |
[Swift] ์คํ(Stack) ๊ตฌํํ๊ธฐ (0) | 2024.09.27 |
[Swift] ์๋ ์ฐธ์กฐ ์นด์ดํธ (0) | 2024.04.02 |
[Swift] ์ ๋ค๋ฆญ (0) | 2024.04.02 |