코테/코딩테스트 대비 Kotlin

Kotlin에서 배열을 n개로 나누기

밤밭황제 2023. 8. 19. 17:07

Kotlin에서 배열을 일정한 크기로 나누는 방법은 여러 가지가 있습니다. 배열을 일정한 크기의 더 작은 배열로 분할하는 방법 중 몇 가지를 예시와 함께 제시하겠습니다.

  1. chunked() 함수 사용:
    chunked() 함수는 배열을 지정한 크기로 나누어 새로운 리스트로 반환합니다.
fun main() {
    val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val k = 3 // 나눌 크기

    val chunks = numbers.chunked(k)
    chunks.forEachIndexed { index, chunk ->
        println("Chunk $index: ${chunk.joinToString()}")
    }
}
  1. windowed() 함수 사용:
    windowed() 함수는 배열의 윈도우를 지정한 크기만큼 이동시키면서 배열을 나눕니다.
fun main() {
    val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val k = 3 // 윈도우 크기

    val windows = numbers.windowed(k, step = k, partialWindows = true)
    windows.forEachIndexed { index, window ->
        println("Window $index: ${window.joinToString()}")
    }
}
  1. 직접 루프 사용:
    직접 루프를 사용하여 배열을 나눌 수도 있습니다.
fun main() {
    val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val k = 3 // 나눌 크기

    val dividedArrays = mutableListOf<List<Int>>()
    var currentIndex = 0
    while (currentIndex < numbers.size) {
        val subList = numbers.sliceArray(currentIndex until (currentIndex + k))
        dividedArrays.add(subList.toList())
        currentIndex += k
    }

    dividedArrays.forEachIndexed { index, subList ->
        println("Sublist $index: ${subList.joinToString()}")
    }
}

위의 예시에서는 chunked(), windowed() 및 직접 루프를 사용하여 배열을 일정한 크기로 나누는 방법을 보여주었습니다. 선택한 방법에 따라 배열을 적절하게 나눌 수 있습니다.

728x90