본문 바로가기
Algorithm/문제풀이_백준

[Swift][Deque] 백준 10866번 (덱)

by Joahnee 2021. 9. 1.

요구능력 : 덱(Deque)

 

코드설명 : 

 

덱을 구현하였다.

 

후기 :  큐와 많이 비슷하다.

let n = Int(readLine()!)!
var deque: [Int] = []

func push_front(_ x: Int) {
    if deque.isEmpty {
        deque.append(x)
    }else {
        deque.reverse()
        deque.append(x)
        deque.reverse()
    }
}

func push_back(_ x: Int) {
    deque.append(x)
}

func pop_front() -> Int {
    if deque.isEmpty {
        return -1
    }else {
        return deque.removeFirst()
    }
}

func pop_back() -> Int {
    if deque.isEmpty {
        return -1
    }else {
        return deque.removeLast()
    }
}

func size() -> Int{
    return deque.count
}

func empty() -> Int{
    if deque.isEmpty {
        return 1
    }else {
        return 0
    }
}

func front() -> Int {
    if deque.isEmpty {
        return -1
    }else {
        return deque.first!
    }
}

func back() -> Int {
    if deque.isEmpty {
        return -1
    }else {
        return deque.last!
    }
}

for _ in 1...n {
    let a = readLine()!.split(separator: " ")
    switch String(a[0]) {
    case "push_front":
        push_front(Int(a[1])!)
    case "push_back":
        push_back(Int(a[1])!)
    case "pop_front":
        print(pop_front())
    case "pop_back":
        print(pop_back())
    case "size":
        print(size())
    case "empty":
        print(empty())
    case "front":
        print(front())
    case "back":
        print(back())
    default:
        break
    }
}

댓글