SubList를 사용한 리스트 슬라이싱
Coddy Kotlin 여정의 기초 섹션에 포함된 레슨. 93개 중 79번째.
때로는 전체 컬렉션을 다루기보다 목록의 일부를 추출해야 할 때가 있습니다. subList() 메서드를 사용하면 기존 목록에서 특정 범위의 요소를 보여 주는 뷰를 만들 수 있습니다.
subList() 메서드는 두 개의 매개변수를 받습니다. 시작 인덱스(포함)와 끝 인덱스(제외)입니다. 즉, 시작 인덱스의 요소는 포함되지만 끝 인덱스의 요소는 포함되지 않습니다:
val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice) // [20, 30, 40]이 예제에서 subList(1, 4)는 인덱스 1부터 인덱스 4까지(인덱스 4는 포함하지 않음)의 요소를 추출합니다. 따라서 두 번째, 세 번째, 네 번째 요소를 얻습니다.
결과로 생성된 하위 목록은 원본 목록의 뷰이며, 복사본이 아닙니다. 변경 가능한 목록을 다룰 때 이 점을 이해하는 것이 중요합니다. 원본 목록의 변경 사항이 하위 목록에 영향을 줄 수 있기 때문입니다.
읽기 전용 목록을 사용하는 대부분의 경우에는 이를 사용하여 요소 범위에 간단히 액세스할 수 있습니다:
val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek) // [Tue, Wed, Thu]챌린지
중급정수 목록과 범위를 나타내는 두 개의 인덱스를 받습니다. subList()를 사용하여 부분 목록을 추출하고 추출한 요소들의 합을 출력하세요.
입력 형식:
- 첫 번째 줄: 요소의 개수를 나타내는 정수
n - 다음
n개의 줄: 목록에 추가할 정수 - 다음 줄: 시작 인덱스(포함)
- 마지막 줄: 종료 인덱스(미포함)
출력 형식:
추출한 부분 목록에 포함된 요소들의 합을 출력하세요.
예시:
목록이 [5, 10, 15, 20, 25]이고 시작 인덱스가 1, 종료 인덱스가 4라면 부분 목록은 [10, 15, 20]이 되며 출력 결과는 45여야 합니다.
직접 해보기
fun main() {
val n = readLine()!!.toInt()
val list = mutableListOf<Int>()
repeat(n) {
list.add(readLine()!!.toInt())
}
val startIndex = readLine()!!.toInt()
val endIndex = readLine()!!.toInt()
// TODO: 아래에 코드를 작성하세요
// subList()를 사용하여 startIndex부터 endIndex까지 요소를 추출하세요
// 추출된 요소들의 합을 계산하고 출력하세요
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: Kotlin 플레이그라운드