Kotlin

Kotlin 공부 - 예제, 연습 - #5 거꾸로 반환하기

자다르 2022. 4. 15. 23:49

※ 인프런 강의: 개복치개발자님의 [입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 강의 내 예제이며, solution #1은 제가 작성한 코드이고, soultion-#2는 강의 예제에서 제시한 코드입니다.


  • 거꾸로 반환하기 soluton - #1
// 리스트의 숫자를 뒤집어서 반환하는 solution 을 만드세요

fun main(){
	
    val arr1 = arrayListOf(1,2,3,4,5)
    val result1 = solution(arr1)
    println(result1)
    // [5,4,3,2,1]

    val arr2 = arrayListOf(2,4,6,8)
    val result2 = solution(arr2)
    println(result2)
    //  [8,6,4,2]
}


fun solution(arr: ArrayList<Int>) :ArrayList <String> {
	val returnList = ArrayList<String>()
    var num : Int
    // 마지막 index를 구하기 위해 List 값 총 갯수에서 -1
    var last_array_index : Int = arr.size-1
    
    //initilization - 이후 값을 넣기 위해 list의 크기만큼 각 요소들을 초기화
   
    for(i in 0..last_array_index){
       returnList.add("")
    }
    
    /* initialization을 위해 아래 방법 사용할 경우 에러 노출
    for(i in 0..last_array_index){
       returnList[i] = ""
    }
    
    Error: 
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
 	at jdk.internal.util.Preconditions.outOfBounds (:-1) 
 	at jdk.internal.util.Preconditions.outOfBoundsCheckIndex (:-1) 
 	at jdk.internal.util.Preconditions.checkIndex (:-1) 
    */
    
    for(i in 0 .. last_array_index){
        // 기존 List 각 값들을 거꾸로 넣기위해 |List index번호-마지막 index번호|를 통해 바꿔 들어갈 index를 구해 해당 index에 저장한다
        // e.g.) index 0의 값 -> index 4의 값으로  
        num = Math.abs(i-last_array_index)
        returnList[num] = arr[i].toString()
    }
    
    return returnList
}

결과
=====================
[5, 4, 3, 2, 1]
[8, 6, 4, 2]
  • 거꾸로 반환하기 soluton - #2
// 리스트의 숫자를 뒤집어서 반환하는 solution 을 만드세요

fun main(){

    val arr1 = arrayListOf(1,2,3,4,5)
    val result1 = solution(arr1)
    println(result1)
    // [5,4,3,2,1]

    val arr2 = arrayListOf(2,4,6,8)
    val result2 = solution(arr2)
    println(result2)
    //  [8,6,4,2]

}

fun solution(arr: ArrayList<Int>) : ArrayList <String> {

    val length = arr.size

    //println(length)

    val resultArr = mutableListOf<String>()

    for (i in 0..length-1){ // length-1 = 4 -> 0 1 2 3 4 -> arr[0] arr[1] arr[2] arr[3] arr[4]
        // println(arr[length-1-i])
        // length-1 = 4
        // 4-0 = 4 arr[4]
        // 4-1 = 3 arr[3]
        // 4-2 = 2 arr[2]
        // 4-3 = 1 arr[1]
        // 4-4 = 0 arr[0]
        resultArr.add(arr[length-1-i].toString())
    }

    // println(resultArr)

    return resultArr as ArrayList<String>

}

출력
=========================
[5, 4, 3, 2, 1]
[8, 6, 4, 2]