Take와 Drop을 사용한 리스트 슬라이싱
Coddy Kotlin 여정의 기초 섹션에 포함된 레슨. 93개 중 80번째.
Kotlin은 목록의 시작이나 끝에서 요소만 필요할 때 목록의 일부를 추출하는 두 가지 더 간단한 방법인 take()과 drop()을 제공합니다.
take() 메서드는 처음 n개의 요소를 포함하는 새 목록을 반환합니다:
val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree) // [10, 20, 30]drop() 메서드는 그 반대의 동작을 합니다. 처음 n개의 요소를 건너뛰고 나머지를 반환합니다:
val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo) // [30, 40, 50]subList()와 달리, 이러한 메서드는 뷰가 아닌 독립적인 복사본을 반환합니다. 또한 단순히 "처음 몇 개" 또는 "처음 몇 개를 제외한 모든" 요소를 원할 때 더 읽기 쉽습니다.
두 방법을 결합하여 중간 부분을 추출할 수 있습니다:
val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle) // [B, C, D]존재하는 요소보다 더 많은 요소를 요청하면 이러한 메서드는 오류를 발생시키지 않고 사용 가능한 요소만 반환합니다:
val short = listOf(1, 2)
println(short.take(10)) // [1, 2]
println(short.drop(10)) // []챌린지
중급정수 목록과 두 개의 숫자를 받습니다. 하나는 처음부터 삭제할 요소의 개수이고, 다른 하나는 삭제한 후 가져올 요소의 개수입니다.
drop()과 take()를 함께 사용하여 목록의 중간 부분을 추출한 다음, 추출한 요소를 출력하세요.
입력 형식:
- 첫 번째 줄: 요소의 개수를 나타내는 정수
n - 다음
n개의 줄: 목록에 추가할 정수 - 다음 줄: 처음부터 삭제할 요소의 개수
- 마지막 줄: 삭제한 후 가져올 요소의 개수
출력 형식:
Kotlin의 기본 목록 형식으로 결과 목록을 출력하세요.
예시:
목록이 [10, 20, 30, 40, 50, 60]이고, drop이 2, take가 3이라면 출력은 다음과 같아야 합니다.
[30, 40, 50]직접 해보기
fun main() {
// 요소의 개수를 읽습니다
val n = readLine()!!.toInt()
// 리스트 요소들을 읽습니다
val list = mutableListOf<Int>()
for (i in 1..n) {
list.add(readLine()!!.toInt())
}
// drop과 take 값을 읽습니다
val dropCount = readLine()!!.toInt()
val takeCount = readLine()!!.toInt()
// TODO: 아래에 코드를 작성하세요
// drop()과 take()를 사용하여 중간 부분을 추출합니다
// 결과를 출력합니다
println(result)
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: Kotlin 플레이그라운드