덱은 double-ended queue로 양쪽 끝에서 삽입 및 삭제가 가능한 자료구조이다.
큐를 구현하듯이 구현하면 되는데 우선 통과된 최종 코드는 다음과 같다.
import Foundation
let N = Int(readLine()!)!
var deque = [Int]()
for _ in 0..<N {
let commandLine = readLine()!.split(separator: " ")
let command = String(commandLine[0])
if command == "push_front" {
deque.insert(Int(commandLine[1])!, at: 0)
} else if command == "push_back" {
deque.append(Int(commandLine[1])!)
} else if command == "pop_front" {
print(deque.isEmpty ? -1 : deque.removeFirst())
} else if command == "pop_back" {
print(deque.isEmpty ? -1 : deque.removeLast())
} else if command == "size" {
print(deque.count)
} else if command == "empty" {
print(deque.isEmpty ? 1 : 0)
} else if command == "front" {
print(deque.isEmpty ? -1 : deque[0])
} else if command == "back" {
print(deque.isEmpty ? -1 : deque.last!)
}
}
=> 따라서, 배열이 비어있지 않음을 알고 있을 경우 removeLast를 사용하고, popLast()를 사용하고 싶다면 popLast()! 다음과 같이 강제 언래핑 해주어야한다.