Deque
Deque 구현하기
class Deque<T> {
var enqueue: [T]
var dequeue: [T] = []
var isEmpty: Bool { return enqueue.isEmpty && dequeue.isEmpty }
var count: Int { return enqueue.count + dequeue.count }
init() { enqueue = [T]() }
init(_ arr: [T]) { enqueue = arr }
func push_front(_ x: T) { dequeue.append(x) }
func push_back(_ x: T) { enqueue.append(x) }
func pop_front() -> T? {
if dequeue.isEmpty {
dequeue = enqueue.reversed()
enqueue.removeAll()
}
return dequeue.popLast()
}
func pop_back() -> T? {
if enqueue.isEmpty {
enqueue = dequeue.reversed()
dequeue.removeAll()
}
return enqueue.popLast()
}
func front() -> T? {
if dequeue.isEmpty {
dequeue = enqueue.reversed()
enqueue.removeAll()
}
return dequeue.last
}
func back() -> T? {
if enqueue.isEmpty {
enqueue = dequeue.reversed()
dequeue.removeAll()
}
return enqueue.last
}
func clear() { enqueue.removeAll(); dequeue.removeAll() }
}
떽! DDeque!