Notice
Recent Posts
Recent Comments
Link
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CI/CD
- Java
- javascript
- linux
- ๋ฐฑ์ค ์ฝํ๋ฆฐ
- ๋ฏธ๊ตญ๋ฐฐ๋น์ฃผํฌ์
- ๋ฐฐ๋น์ฃผ
- Kotlin
- ์ฝํ๋ฆฐ ์คํ
- ๋ฏธ๊ตญ์ฃผ์
- ํ์ฝํ
- ์๋ฐ
- GIT
- ์ฝํ๋ฆฐ
- kotlin algorithm
- ์ฝํ๋ฆฐ ์๊ณ ๋ฆฌ์ฆ
- Vue.js
- java ์ฝ๋ฉ ํ ์คํธ
- ๋ฐฑ์ค
- vue3
- ํ๋ก๊ทธ๋๋จธ์ค
- python
- Swift
- kotlin ์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ฌ
- ์๋ฐ์คํฌ๋ฆฝํธ
- js
- pnpm
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ ์๊ณ ๋ฆฌ์ฆ
Archives
- Today
- Total
๐ ์ ์ด์ ๋จธ๋ฆฟ์์ผ๋ก
[Kotlin] ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์ฝํ๋ฆฐ ์๋ฃ๊ตฌ์กฐ ๋ณธ๋ฌธ
Programming/Java, Kotlin
[Kotlin] ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์ฝํ๋ฆฐ ์๋ฃ๊ตฌ์กฐ
Space_Jin 2025. 3. 3. 19:03728x90
๋ฐ์ํ
๋ฐฐ์ด
// ๋ฐฐ์ด ์ด๊ธฐํ
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
๋ฐ์ํ