struct Queue<T> {
var input: [T] = []
var output: [T] = []
var isEmpty: Bool {
return input.isEmpty && output.isEmpty
}
var count: Int {
return input.count + output.count
}
mutating func enqueue(_ element: T) {
input.append(element)
}
mutating func delete() -> T {
if output.isEmpty {
output = input.reversed()
input.removeAll()
}
return output.removeLast()
}
}
let N = Int(readLine()!)!
var queue = Queue<Int>()
queue.input = Array(1...N)
while queue.count > 1 {
queue.delete()
let number = queue.delete()
queue.enqueue(number)
}
print(queue.delete())
스위프트는 큐 자료구조가 없어서 dudu님의 코드를 사용해서 구현했다.