[kotlin] 코틀린으로 덱 알고리즘 작성하기
덱(Deque)은 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조입니다. 코틀린을 사용하여 덱 알고리즘을 작성하려면 다음과 같이 할 수 있습니다.
덱 클래스 정의하기
우선, 덱 클래스를 정의해야 합니다. 다음은 간단한 덱 클래스의 예시입니다.
class Deque<T> {
private val deque = mutableListOf<T>()
fun addFirst(item: T) {
deque.add(0, item)
}
fun addLast(item: T) {
deque.add(item)
}
fun removeFirst(): T? {
return if (deque.isEmpty()) {
null
} else {
deque.removeAt(0)
}
}
fun removeLast(): T? {
return deque.removeLastOrNull()
}
fun peekFirst(): T? {
return deque.firstOrNull()
}
fun peekLast(): T? {
return deque.lastOrNull()
}
fun size(): Int {
return deque.size
}
fun isEmpty(): Boolean {
return deque.isEmpty()
}
}
위의 코드에서는 MutableList
를 사용하여 간단한 덱을 구현했습니다. addFirst
, addLast
, removeFirst
, removeLast
, peekFirst
, peekLast
, size
, isEmpty
메서드를 제공하여 덱의 기본 동작을 구현하였습니다.
덱 활용하기
이제 덱을 사용해보겠습니다. 다음은 간단한 예시입니다.
fun main() {
val deque = Deque<Int>()
deque.addFirst(1)
deque.addLast(2)
deque.addFirst(3)
println(deque.removeLast()) // 출력: 2
println(deque.peekFirst()) // 출력: 3
println(deque.size()) // 출력: 2
deque.removeFirst()
deque.removeLast()
println(deque.isEmpty()) // 출력: true
}
위의 코드를 실행하면, 각 라인에 주석과 함께 주석에 해당하는 결과가 출력됩니다. 이렇게 코틀린으로 덱 알고리즘을 작성하고 활용할 수 있습니다.
덱은 머리(head)와 꼬리(tail) 양쪽에서 삽입과 삭제가 가능하기 때문에 다양한 알고리즘에서 유용하게 활용될 수 있습니다.
덱에 대한 더 많은 자세한 내용은 Kotlin Deque를 참고하세요.