728x90
๋ฐ์ํ
๋ฐฐ์ด
// ๋ฐฐ์ด ์ด๊ธฐํ
val array1 = arrayOf(1, 2, 3)
val array2 = Array(3) {0}
println(array1.joinToString()) // 1, 2, 3
println(array2.joinToString()) // 0, 0, 0
array2[0] = 1 // 0 ์ธ๋ฑ์ค์ ๊ฐ์ 1๋ก ๋ณ๊ฒฝ
println(array2.joinToString()) // 1, 0, 0
// ArrayList ์์ฑ
val list = ArrayList<Int>()
list.add(1)
list.add(2)
println(list) // 1, 2
์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ก ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฉฐ, MutableList ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํ์ฌ ์คํ์ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค
์คํ - MutableList
val stack1 = mutableListOf<Int>() // ๋น ๋ฆฌ์คํธ ์์ฑ
val stack2 = MutableList<Int>(3){0} // 0์ผ๋ก ์ด๊ธฐํ๋ ํฌ๊ธฐ 3์ ์คํ
println(stack1) // []
println(stack2) // [0, 0, 0]
// ๋งจ ๋์ 1์ ์ถ๊ฐ
stack1.add(1)
stack2.add(1)
println(stack1) // [1]
println(stack2) // [0, 0, 0, 1]
println(stack1.isEmpty()) // false
println(stack1.isNotEmpty()) // true
val last = stack1.removeLast() // ๋งจ ๋ ์ถ์ถ ํ ๋ฆฌํด(pop)
println(last) // 1
println(stack1) // []
ArrayDeque๋ฅผ ์ด์ฉํ๋ฉด ์กฐ๊ธ ๋ ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ์ข์ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํํํ ์ ์๋ค.
์คํ - ArrayDeque
// ์คํ ์์ฑ
val stack = ArrayDeque<Int>()
// ์คํ์ ์์ ์ถ๊ฐ (Push)
stack.push(1)
stack.push(2)
stack.push(3)
// ์คํ์ ์ต์๋จ ์์ ํ์ธ
println(stack.peek()) // 3
// ์คํ์์ ์์ ์ ๊ฑฐ (Pop)
println(stack.pop()) // 3
println(stack.pop()) // 2
// ์คํ์ ํ์ฌ ์ํ
println(stack) // [1]
// ์คํ์ด ๋น์ด ์๋์ง ํ์ธ
println(stack.isEmpty()) // false
ํ ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ณ๋๋ก ์กด์ฌํ์ง ์์ผ๋ฉฐ, LinkedList ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ๊ฐ๋ฅ
ํ
val queue = LinkedList<Int>()
queue.offer(1) // 1
queue.offer(2) // 2
queue.offer(3) // 3
println(queue) // 1, 2, 3
println(queue.peek()) // ๊ฐ์ฅ ์์ ๋ฆฌํด
println(queue) // 1, 2, 3
println(queue.poll()) // ๊ฐ์ฅ ์์ ์ถ์ถํ์ฌ ๋ฆฌํด
println(queue) // 2, 3
์ฐ์ ์์ ํ์ ๊ฒฝ์ฐ, ์๋ฃ๊ตฌ์กฐ๊ฐ ์กด์ฌํ๋ฉฐ, ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐ์ ์ํ๋ min-heap ๊ตฌ์กฐ๊ฐ ๊ธฐ๋ณธ์ด๋ค.
ํฐ ๊ฐ์ ์ฐ์ ํ๋ max-heap ๊ตฌ์กฐ๋ Comparator๋ฅผ ํ์ฉํด์ ๊ตฌํ ๊ฐ๋ฅํ๋ค.
์ฐ์ ์์ ํ
// ์ฐ์ ์์ ํ ์์ฑ, ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ ํ(min-heap) ๊ตฌ์กฐ
val minHeap = PriorityQueue<Int>()
// ์์ ์ถ๊ฐ
minHeap.add(5)
minHeap.add(1)
minHeap.add(3)
minHeap.add(2)
println("์ฐ์ ์์ ํ ์ํ: $minHeap") // 1, 2, 3, 5
// ์์ ์ ๊ฑฐ (๊ฐ์ฅ ๋ฎ์ ๊ฐ)
while (minHeap.isNotEmpty()) {
val removedOne = minHeap.poll() // ์ต์์ ์์ ์ ๊ฑฐ ๋ฐ ๋ฐํ
println("์ ๊ฑฐ๋ ๊ฐ: $removedOne") // ์ ๊ฑฐ๋ ๊ฐ ์ถ๋ ฅ (1, 2, 3,5 ์)
}
// max-heap์ ์์ฑํ๊ธฐ ์ํด Comparator๋ฅผ ์ฌ์ฉ
val maxHeap = PriorityQueue<Int>(compareByDescending { it })
// ์์ ์ถ๊ฐ
maxHeap.add(5)
maxHeap.add(1)
maxHeap.add(3)
maxHeap.add(2)
println("์ต๋ ํ ์ํ: $maxHeap") // 5, 3, 2, 1
// ์์ ์ ๊ฑฐ (๊ฐ์ฅ ํฐ ๊ฐ)
while (maxHeap.isNotEmpty()) {
val removedOne = maxHeap.poll() // ์ต์์ ์์ ์ ๊ฑฐ ๋ฐ ๋ฐํ
println("์ ๊ฑฐ๋ ๊ฐ: $removedOne") // ์ ๊ฑฐ๋ ๊ฐ ์ถ๋ ฅ (5, 3, 2, 1 ์์)
}
728x90
๋ฐ์ํ