๐Ÿ’ป CS/์ž๋ฃŒ๊ตฌ์กฐ

[Swift] ๋ฑ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ

JerryiOS 2023. 3. 29. 15:15

๋ฑ

์Šคํƒ๊ณผ ํ์˜ ํŠน์„ฑ์„ ๋ชจ๋‘ ๊ฐ–๋Š”, ๋‘˜์„ ์กฐํ•ฉํ•œ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ

๋ฑ์˜ ADT(Abstract Data Type)๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•ต์‹ฌ ํ•จ์ˆ˜ ๋„ค๊ฐ€์ง€์˜ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

- ์•ž์œผ๋กœ ๋„ฃ๊ธฐ

- ๋’ค๋กœ ๋„ฃ๊ธฐ

- ์•ž์—์„œ ๋นผ๊ธฐ

- ๋’ค์—์„œ ๋นผ๊ธฐ

 

๋ฑ์€ ๋จธ๋ฆฌ์—์„œ ์ถ”๊ฐ€์™€ ์‚ญ์ œ๊ฐ€ ์ด๋ค„์ง€๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  ๊ผฌ๋ฆฌ์— ์œ„์น˜ํ•œ ๋…ธ๋“œ์—์„œ ์ถ”๊ฐ€์™€ ์‚ญ์ œ๊ฐ€ ์ด๋ค„์ง„๋‹ค๋Š” ์ ์—์„œ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ณ , ์ด๋Š” ๋ฑ ๊ตฌํ˜„์— ์žˆ์–ด์„œ ๋งค์šฐ ์ข‹์€ ์„ ํƒ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ๋งŒ ๋ฑ์„ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค.

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()!
    }
    
}
๋ฐ˜์‘ํ˜•