[kotlin] 코틀린 집합(Set)을 이용한 큐 자료구조

큐(Queue)는 선입선출(FIFO) 원칙에 따라 데이터를 저장하고 검색하는 자료구조입니다. 코틀린에서는 표준 라이브러리에 Set을 이용하여 간단한 큐 자료구조를 구현할 수 있습니다.

코틀린 Set

코틀린의 Set은 순서가 없는 변경 불가능한 컬렉션으로, 중복된 요소를 포함할 수 없습니다. 따라서 Set을 활용하여 중복을 허용하지 않는 큐 자료구조를 구현할 수 있습니다.

다음은 Set을 이용하여 큐 자료구조를 구현하는 예제 코드입니다.

class Queue<T>() {
    private val set = mutableSetOf<T>()

    fun enqueue(item: T) {
        set.add(item)
    }

    fun dequeue(): T? {
        val item = set.firstOrNull()
        if (item != null) {
            set.remove(item)
        }
        return item
    }

    fun peek(): T? {
        return set.firstOrNull()
    }

    fun size(): Int {
        return set.size
    }

    fun isEmpty(): Boolean {
        return set.isEmpty()
    }
}

위 코드에서 enqueue는 큐에 요소를 추가하고, dequeue는 가장 먼저 추가된 요소를 제거하며 반환합니다. peek는 가장 먼저 추가된 요소를 반환하지만 제거하지는 않습니다. size는 큐에 있는 요소의 개수를, isEmpty는 큐가 비어 있는지 여부를 반환합니다.

이제 코틀린에서는 Queue 클래스를 사용하여 큐 자료구조를 생성하고 다양한 연산을 수행할 수 있습니다.

이렇게 Set을 이용하여 큐를 구현하면 중복을 허용하지 않는 간단하고 효율적인 자료구조를 만들 수 있습니다.

결론

코틀린의 Set을 활용하여 큐 자료구조를 구현하면 코드를 간결하게 유지할 수 있고, 중복된 요소를 효과적으로 제어할 수 있습니다. 이는 프로그래밍의 복잡성을 줄이고 코드의 가독성을 높여줄 수 있습니다. 여기에는 좋은 코딩 습관과 유지보수가 용이한 코드를 작성할 수 있는 장점이 있습니다.

참고 자료