배열 자르기
문제 : 정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요
* 초기 코드
class Solution {
fun solution(numbers: IntArray, num1: Int, num2: Int): IntArray {
var answer: IntArray = intArrayOf()
return answer
}
}
배열 및 리스트 자르기 방법은 총 3가지
* slice, sliceArray()
- Array나 List를 원하는 구간만 잘라서 새로운 List를 만들고 싶을 때 사용
- 원본 객체는 변경되지 않음
- ..(~이상 ~이하) 혹은 until(~이상 ~미만)으로 범위 지정 가능 ex) array.slice(1..4) --> array[1]부터 [4]까지
* copyOfRange()
- 원래 배열의 지정된 범위의 복사본인 새 배열을 반환
- 원본 배열은 변경되지 않음
- 구조는 copyOfRange(fromIndex, toIndex) (fromIndex- 복사할 범위(포함)의 시작, toIndex- 복사할 범위의 끝(제외))
* subList()
- List를 원하는 구간만 잘라서 보여주고 싶을 때 사용
- 원본 리스트와 같은 메모리 공간을 사용
- 구조는 copyOfRange()와 동일하게 subList(fromIndex, toIndext)
- 원본 리스트는 변경되지 않음
* subList와 slice 차이
-> subList는 원본 리스트의 변경 사항이 추출된 부분 리스트에 영향을 끼침
-> slice는 원본 리스트의 변경 사항이 추출된 부분 리스트에 영향을 끼치지 않음
* subList와 slice 차이 예시
val mutableList = mutableListOf(0, 1, 2, 3, 4)
val sublist = mutableList.subList(1, 4) // [1, 2, 3]
val slice = mutableList.slice(1..3) // [1, 2, 3]
mutableList[2] = 5
println(sub) // 결과 -> [1, 5, 3]
println(sliced) // 결과 -> [1, 2, 3]
1. slice, sliceArray 활용 풀이
//1. slice 활용(toIntArray형 변환 필요)
class Solution {
fun solution(numbers: IntArray, num1: Int, num2: Int): IntArray = numbers.slice(num1..num2).toIntArray()
}
//2. sliceArray() 활용
class Solution {
fun solution(numbers: IntArray, num1: Int, num2: Int): IntArray = numbers.sliceArray(num1..num2)
}
2. copyOfRange 활용 풀이
class Solution {
//마지막 Index 제외하기 때문에 +1 해줘야 함
fun solution(numbers: IntArray, num1: Int, num2: Int): IntArray = numbers.copyOfRange(num1,num2+1)
}
3. subList 활용 풀이
class Solution {
fun solution(numbers: IntArray, num1: Int, num2: Int): IntArray = numbers.toList().subList(num1,num2+1).toIntArray()
}
참고 자료 및 보면 유용한 자료
https://velog.io/@ddanglehee/22.08.10-TIL
22.08.10 TIL (Kotlin 배열, 리스트 자르기)
Array나 List를 원하는 구간만 잘라서 새로운 List를 만들고 싶을 때 사용원본 객체는 변경되지 않는다.예시)Array를 원하는 구간만 잘라서 새로운 Array를 만들고 싶을 때 사용. Array.slice(), sliceArray()
velog.io
: 배열, 리스트 자르는 함수 종류
Kotlin에서 리스트 추출하기 : subList, slice, take, drop
안녕하세요, Shopping Service API팀 강희정입니다. 이번 글에서는 Kotlin에서 리스트를 추출하는 메서드에 대해 다뤄보고자 합니다. 비교적 가벼운 내용이긴 하겠지만, 비슷하면서 다른 기능을 하는
dev.gmarket.com
: subList와 slice의 차이점
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/copy-of-range.html
copyOfRange - Kotlin Programming Language
kotlinlang.org
: kotlin 공식 문서(copyOfRange란?)
'Android 앱개발 공부 > TIL(Today I Learned)' 카테고리의 다른 글
[Android] TIL 27일차 (0) | 2024.06.27 |
---|---|
[Android] TIL 26일차 (0) | 2024.06.26 |
[Android] TIL 24일차 (0) | 2024.06.24 |
[Android] TIL 23일차 (0) | 2024.06.21 |
[Android] TIL 22일차 (0) | 2024.06.20 |