Swift Data Structure And Algorithm/Queue

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

youngjaeLee1026 2022. 4. 3. 14:14

1. ๋ฌธ์ œ

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

2. ์ž…์ถœ๋ ฅ

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

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

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

4. ๋ฌธ์ œ ์„ค๊ณ„

  • ๋‹จ์ˆœ ์„ ํ˜• ํ์—์„œ๋Š” ํˆฌ ํฌ์ธํ„ฐ front์™€ rear๊ฐ€ ๊ณ„์† ์ฆ๊ฐ€๋งŒ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ, ๋ฐฐ์—ด์˜ ์•ž ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋จ
  • ๋”ฐ๋ผ์„œ ํ ๋‚ด์˜ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ณ„๋„์˜ count๋ฅผ ๋‘์–ด overflow์™€ underflow๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜๋ฉฐ,
  • front์™€ rear๊ฐ€ ๋ฐฐ์—ด์˜ ๋์— ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด 0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์คŒ์œผ๋กœ์จ ๋‹จ์ˆœ ์„ ํ˜• ํ์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

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

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

//MARK: - Framework
import Foundation

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

//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