[kotlin] 코틀린으로 스택 알고리즘 구현하기

스택(Stack)은 데이터를 후입선출(LIFO) 방식으로 저장하는 자료구조입니다. 새로운 데이터가 쌓일 때마다 가장 위에 쌓이게 됩니다. 코틀린을 사용하여 스택 알고리즘을 구현해보겠습니다.

스택 구현하기

class Stack {
    private val items: MutableList<Int> = mutableListOf()

    fun push(item: Int) {
        items.add(item)
    }

    fun pop(): Int? {
        if (isEmpty()) {
            return null
        }
        return items.removeAt(items.size - 1)
    }

    fun peek(): Int? {
        if (isEmpty()) {
            return null
        }
        return items[items.size - 1]
    }

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

위의 코드는 정수 값을 저장할 수 있는 스택을 구현한 것입니다. push 메서드는 스택에 새로운 항목을 추가하고, pop 메서드는 스택에서 항목을 제거하고 반환합니다. peek 메서드는 스택의 맨 위에 있는 항목을 반환하며, isEmpty 메서드는 스택이 비어 있는지 확인합니다.

스택 사용하기

fun main() {
    val stack = Stack()
    stack.push(1)
    stack.push(2)
    stack.push(3)

    println(stack.pop()) // 3
    println(stack.peek()) // 2
    println(stack.isEmpty()) // false
}

위의 예제에서는 Stack 클래스를 사용하여 스택에 값을 추가하고 제거하는 방법을 보여줍니다.

이제 코틀린으로 간단한 스택 알고리즘을 구현하는 방법을 알게 되었습니다. 스택은 자료구조 이론을 이해하고 구현하는 데 중요한 역할을 합니다. 실제 프로그래밍에서 스택을 사용하여 다양한 문제를 해결할 수 있을 것입니다.

참고 자료