Menu
CoddyTech

Mengiris list dengan Take Drop

Termasuk bagian Dasar-Dasar dalam perjalanan Kotlin di Coddy. Pelajaran 80 dari 93.

Kotlin menyediakan dua method yang lebih sederhana untuk mengambil sebagian elemen dari list saat kamu hanya memerlukan elemen dari awal atau akhir: take() dan drop().

method take() mengembalikan list baru yang berisi n elemen pertama:

val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree)  // [10, 20, 30]

method drop() melakukan hal sebaliknya. method ini melewati n elemen pertama dan mengembalikan sisanya:

val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo)  // [30, 40, 50]

Tidak seperti subList(), method ini mengembalikan salinan independen, bukan tampilan. Method ini juga lebih mudah dibaca saat kamu hanya ingin mengambil "beberapa elemen pertama" atau "semua elemen kecuali beberapa elemen pertama".

Kamu bisa menggabungkan kedua method untuk mengambil bagian tengah:

val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle)  // [B, C, D]

Jika kamu meminta lebih banyak elemen daripada yang tersedia, method ini hanya mengembalikan elemen yang tersedia tanpa menimbulkan error:

val short = listOf(1, 2)
println(short.take(10))  // [1, 2]
println(short.drop(10))  // []
challenge icon

Tantangan

Sedang

Kamu akan menerima list bilangan bulat dan dua angka: berapa banyak elemen yang harus dihapus dari awal dan berapa banyak elemen yang harus diambil setelah penghapusan.

Gunakan drop() dan take() bersama-sama untuk mengambil bagian tengah dari list, lalu cetak elemen yang diambil.

Format input:

  • Baris pertama: bilangan bulat n yang menunjukkan jumlah elemen
  • n baris berikutnya: bilangan bulat untuk ditambahkan ke list
  • Baris berikutnya: jumlah elemen yang harus dihapus dari awal
  • Baris terakhir: jumlah elemen yang harus diambil setelah penghapusan

Format output:

Cetak list hasilnya dalam format list default Kotlin.

Contoh:

Jika list-nya adalah [10, 20, 30, 40, 50, 60], jumlah yang dihapus adalah 2, dan jumlah yang diambil adalah 3, output-nya adalah:

[30, 40, 50]

Coba sendiri

fun main() {
    // Baca jumlah elemen
    val n = readLine()!!.toInt()
    
    // Baca elemen list
    val list = mutableListOf<Int>()
    for (i in 1..n) {
        list.add(readLine()!!.toInt())
    }
    
    // Baca nilai drop dan take
    val dropCount = readLine()!!.toInt()
    val takeCount = readLine()!!.toInt()
    
    // TODO: Tulis kodemu di bawah ini
    // Gunakan drop() dan take() untuk mengambil bagian tengah
    
    
    // Cetak hasilnya
    println(result)
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground Kotlin