본문 바로가기
알고리즘

Swift로 자료구조 구현하기 - 큐(Queue) 예제

by mr.conan 2023. 6. 22.
728x90
반응형

자료구조는 데이터를 저장하고 조직하는 방법을 말합니다. 이번 글에서는 Swift를 사용하여 큐(Queue) 자료구조를 직접 구현하는 예제를 알아보겠습니다. 큐는 선입선출(FIFO, First-In-First-Out)의 원리를 따르는 자료구조로, 데이터를 일렬로 관리하는 구조입니다.

 

1. 큐(Queue) 개념 이해하기: 큐는 데이터를 저장하는 컨테이너로, 데이터를 삽입(enqueue)하고 추출(dequeue)할 수 있습니다. 큐의 핵심 개념은 선입선출(FIFO)입니다. 가장 먼저 삽입된 데이터가 가장 먼저 추출되는 특징을 가지고 있습니다.

 

 

2.큐(Queue) 구현하기: 이제 Swift로 큐 자료구조를 구현해보겠습니다. 다음은 Queue 구조체의 기본 형태입니다.

struct Queue<T> {
    private var elements: [T] = []
    
    // 큐가 비어있는지 확인
    var isEmpty: Bool {
        return elements.isEmpty
    }
    
    // 큐에 데이터 추가
    mutating func enqueue(_ element: T) {
        elements.append(element)
    }
    
    // 큐에서 데이터 추출
    mutating func dequeue() -> T? {
        guard !isEmpty else {
            return nil
        }
        return elements.removeFirst()
    }
    
    // 큐의 가장 앞 데이터 반환
    func peek() -> T? {
        return elements.first
    }
    
    // 큐의 크기 반환
    var count: Int {
        return elements.count
    }
}

위 코드에서는 Queue라는 제네릭(Generic) 구조체를 정의합니다. elements 배열을 사용하여 큐의 데이터를 저장하고, isEmpty, enqueue, dequeue, peek, count와 같은 기능을 구현합니다.

 

3.큐(Queue) 예제 사용하기: 이제 위에서 구현한 큐를 사용하는 예제를 살펴보겠습니다.

var queue = Queue<String>()

queue.enqueue("Apple")
queue.enqueue("Banana")
queue.enqueue("Cherry")

print(queue.peek()) // "Apple"

print(queue.dequeue()) // "Apple"
print(queue.dequeue()) // "Banana"

print(queue.count) // 1
print(queue.isEmpty) // false

위 예제에서는 문자열을 저장하는 큐를 생성하고, enqueue 메서드를 사용하여 데이터를 추가합니다. peek 메서드로 큐의 가장 앞 데이터를 확인하고, dequeue 메서드를 사용하여 데이터를 추출합니다. count와 isEmpty 프로퍼티를 사용하여 큐의 크기와 비어있는지 여부를 확인합니다.

 

결론: 이번 글에서는 Swift를 사용하여 큐(Queue) 자료구조를 구현하는 예제를 살펴보았습니다. 큐는 선입선출의 특성을 가지며, enqueue와 dequeue를 통해 데이터를 추가하고 추출할 수 있습니다. 직접 자료구조를 구현해보면서 Swift의 강력한 기능을 활용해보세요. 앞으로 다른 자료구조를 구현하는 것에도 도전해보시기 바랍니다.

728x90
반응형