Swift
에는 Queue
가 없다..! 😱
프로그래머스 코테준비를 하면서 Array로 큐 연산을 하다보니 시간초과가 발생했다 ㅠㅠ
Swift로 Queue
와 앞뒤로 삽입/삭제가 가능한 Deque (덱)
을 구현한 코드를 활용했더니 시간초과 해결! 🥰
class Queue<T> {
var enQueue: [T]
var deQueue: [T] = []
var count: Int {
return enQueue.count + deQueue.count
}
var isEmpty: Bool {
return enQueue.isEmpty && deQueue.isEmpty
}
init(_ queue: [T]) {
self.enQueue = queue
}
func push(_ element: T) {
enQueue.append(element)
}
func pop() -> T {
if deQueue.isEmpty {
deQueue = enQueue.reversed()
enQueue.removeAll()
}
return deQueue.popLast()!
}
}
temp
에 Array를 넣어 선언하면 된다 👍🏻
var temp = [Int]()
for i in 1...N {
temp.append(i)
}
var myQueue: Queue = Queue<Int>(temp)
class Deque<T>{
var enQueue: [T]
var deQueue: [T] = []
var count: Int {
return enQueue.count + deQueue.count
}
var isEmpty: Bool {
return enQueue.isEmpty && deQueue.isEmpty
}
init(_ queue: [T]) {
enQueue = queue
}
func pushFirst(_ element: T) {
deQueue.append(element)
}
func pushLast(_ element: T) {
enQueue.append(element)
}
func popFirst() -> T {
if deQueue.isEmpty {
deQueue = enQueue.reversed()
enQueue.removeAll()
}
return deQueue.popLast()!
}
func popLast() -> T {
if enQueue.isEmpty {
enQueue = deQueue.reversed()
deQueue.removeAll()
}
return enQueue.popLast()!
}
}