Android 앱개발 공부/TIL(Today I Learned)

[Android] TIL 25일차

bunny code 2024. 6. 25. 15:42

배열 자르기


 

문제 : 정수 배열 numbers와 정수 num1num2가 매개변수로 주어질 때, 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

: 배열, 리스트 자르는 함수 종류

 

https://dev.gmarket.com/96

 

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