문제
풀이 코드
struct Deque<T> {
private var elements: [T] = []
public var size: Int {
return elements.count
}
public var empty: Int {
return elements.isEmpty ? 1 : 0
}
public func front() -> T? {
return self.elements.first
}
public func back() -> T? {
return self.elements.last
}
public mutating func push_front(_ element: T) {
return elements.insert(element, at: 0)
}
public mutating func push_back(_ element: T) {
return elements.append(element)
}
public mutating func pop_front() -> T? {
return elements.isEmpty ? nil : elements.removeFirst()
}
public mutating func pop_back() -> T? {
return elements.isEmpty ? nil : elements.removeLast()
}
}
let N = Int(readLine()!)!
var intQueue = Deque<Int>()
for _ in 0..<N {
let inputs = readLine()!.split(separator: " ")
switch inputs[0] {
case "push_front":
intQueue.push_front(Int(inputs[1])!)
case "push_back":
intQueue.push_back(Int(inputs[1])!)
case "pop_front":
print(intQueue.pop_front() ?? -1)
case "pop_back":
print(intQueue.pop_back() ?? -1)
case "size":
print(intQueue.size)
case "empty":
print(intQueue.empty)
case "front":
print(intQueue.front() ?? -1)
default:
print(intQueue.back() ?? -1)
}
}
풀이 과정
Front 와 Back 을 구분하는것 이외에는 큐 문제와 완전 똑같았다,
채점결과 한번 틀렸는데
front 와 back 개념을 잘못 설정했다 .. 머쓱 ^^
back 함수들을 추가하여
insert(item, at: index) 를 통해 첫 요소에 값을 넣어 push_front 를 구성 하였고,
removeLast 함수를 사용해 마지막 요소를 제거해 주었다