자료구조는 데이터를 저장하고 조직하는 방법을 말합니다. 이번 글에서는 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의 강력한 기능을 활용해보세요. 앞으로 다른 자료구조를 구현하는 것에도 도전해보시기 바랍니다.
'알고리즘' 카테고리의 다른 글
Swift로 복잡한 데이터의 선형 탐색 구현하기 (0) | 2023.06.27 |
---|---|
알고리즘 탐색의 종류와 특징 (0) | 2023.06.27 |
Swift로 알고리즘 그래프 구현하기 (0) | 2023.06.27 |
Swift로 자료구조 구현하기 - 트리(Tree) 예제 (0) | 2023.06.22 |
Swift로 자료구조 구현하기 - 스택(Stack) 예제 (0) | 2023.06.22 |