Swift Data Structure And Algorithm/Queue

ํ ๊ตฌํ˜„ํ•˜๊ธฐ

youngjaeLee1026 2022. 4. 3. 14:10

1. ๋ฌธ์ œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-04-03 14 08 14

2. ์ž…์ถœ๋ ฅ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-04-03 14 08 30

3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-04-03 14 08 46

4. ์ „์ฒด ์ฝ”๋“œ

//MARK: - ํ ๊ตฌํ˜„ํ•˜๊ธฐ

//MARK: - Framework
import Foundation

//MARK: - Type
struct Queue {
    //MARK: - Property
    private var array: [Int]
    private var f: Int
    private var r: Int
    private var capacity: Int
    
    //MARK: - Initializer
    init(_ capacity: Int) {
        self.capacity = capacity
        self.array = Array(repeating: 0, count: capacity)
        self.f = 0
        self.r = 0
    }
    
    //MARK: - Method
    mutating func push(_ data: Int) -> Void {
        if self.r >= self.capacity {
            print("Overflow")
        } else {
            self.array[self.r] = data
            self.r += 1
        }
    }
    
    mutating func pop() -> Void {
        if self.r - self.f <= 0 {
            print("Underflow")
        } else {
            self.array[self.f] = 0
            self.f += 1
        }
    }
    
    func front() -> Int {
        return self.r - self.f <= 0 ? -1 : self.array[self.f]
    }
    
    func size() -> Int {
        return self.r - self.f
    }
}

//MARK: - Function
func solution() -> Void {
    //MARK: - Input
    guard let input = readLine()?.components(separatedBy: " ") else { return }
    
    let n: Int = input.map { Int($0) }[0] ?? 0
    let m: Int = input.map { Int($0) }[1] ?? 0
    var queue: Queue = Queue(n)
    
    //MARK: - Process & Output
    for _ in 0..<m {
        guard let inputData = readLine()?.components(separatedBy: " ") else { return }
        let operation: Int = inputData.map { Int($0) }[0] ?? 0
        
        switch operation {
        case 1:
            let data: Int = inputData.map { Int($0) }[1] ?? 0
            queue.push(data)
        case 2:
            queue.pop()
        case 3:
            print(queue.front() == -1 ? "NULL" : "\(queue.front())")
        default:
            break
        }
    }
}
solution()

 

์ „์ฒด์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

'Swift Data Structure And Algorithm > Queue' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์›ํ˜•ํ ๊ตฌํ˜„ํ•˜๊ธฐ  (0) 2022.04.03