โจ๏ธ Language/swift
[Swfit] ํ(Queue) ๊ตฌํํ๊ธฐ
hyebin (Helia)
2024. 9. 27. 20:04
๋ฐ์ํ
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
๋ฐ์ํ