배열은 많은 개념을 구현하는 데에 유용한 자료구조입니다. 그 중에서도 스택(Stack)은 데이터를 후입선출(Last-In, First-Out) 방식으로 저장하고 접근하는 자료구조입니다. Kotlin에서 배열을 스택으로 사용하는 방법에 대해 알아보겠습니다.
먼저, 배열을 선언하고 초기화합니다. 예를 들어, 정수를 저장하는 스택을 만들기 위해 다음과 같이 배열을 선언할 수 있습니다.
val stack = IntArray(size)
여기서 size
는 스택의 크기를 의미합니다. 이제 스택의 기능을 구현해보겠습니다.
-
push: 스택에 값을 추가하는 기능입니다. 이를 위해 배열의 인덱스를 활용하여 값을 저장합니다. 예를 들어, 정수
value
를 스택에 추가하는push
함수는 다음과 같이 구현할 수 있습니다.fun push(value: Int) { stack[topIndex++] = value }
여기서
topIndex
는 스택의 가장 위에 있는 요소를 가리키는 인덱스입니다. -
pop: 스택에서 값을 제거하고 반환하는 기능입니다. 마찬가지로 인덱스를 활용하여 값을 제거합니다. 예를 들어, 스택의 가장 위에 있는 값을 제거하고 반환하는
pop
함수는 다음과 같이 구현할 수 있습니다.fun pop(): Int { if (topIndex == 0) { throw EmptyStackException("Stack is empty") } return stack[--topIndex] }
-
peek: 스택의 가장 위에 있는 값을 반환하는 기능입니다. 값을 제거하지 않고 그대로 확인하기 위해 사용합니다. 예를 들어, 스택의 가장 위에 있는 값을 반환하는
peek
함수는 다음과 같이 구현할 수 있습니다.fun peek(): Int { if (topIndex == 0) { throw EmptyStackException("Stack is empty") } return stack[topIndex - 1] }
위에서 구현한 push
, pop
, peek
함수를 사용하여 배열을 스택으로 활용할 수 있습니다. 다음은 간단한 예제입니다.
fun main() {
push(1)
push(2)
push(3)
println(pop()) // 3 출력
println(peek()) // 2 출력
println(pop()) // 2 출력
}
이처럼 Kotlin에서 배열을 스택으로 사용하는 방법을 소개했습니다. 배열을 활용하여 더 다양한 자료구조를 구현할 수도 있으니 참고해보세요.