Kotlin 문법 및 연습 문제

(Kotlin) - 배열의 평균값

돗개진 2024. 2. 29. 14:45

프로그래머스에서 코딩테스트 문제 중 배열의 평균값을 구하는 문제를 풀었는데 C나 python으로 풀었으면 금방 풀었겠지만 Kotlin 문법과 메소드 용어들을 제대로 몰라서 익숙해지는 데 시간이 좀 필요할 것 같다.

 

여하튼 아래의 Kotlin 배열을 사용하는 두 문제를 통해서 Kotlin 배열 사용법에 대해서 알아보자

ㄴ> 여하튼 이 문제는 대충 입력받은 원소를 뒤집어서 반환하는 문제다.

 

class Solution {
    fun solution(num_list: IntArray): IntArray {
        val answer = IntArray(num_list.size)
        // answer 배열의 초기화를 위해 num_list.size만큼의 크기를 가진 배열 선언
        
        if(num_list.size in 1..1000) {
            for(i in num_list.indices) {
                if(num_list[i] in 0..1000) {
                   answer[i] = num_list[num_list.size - 1 - i]
                   // num_list.size의 .size는 배열의 길이를 나타내기 때문에 인덱스와
                   // 값이 1 차이가 난다. 따라서 -1 해야 함
                }
            }
        }
        return answer
    }
}

ㄴ> 여기서 사용된 indicessize 의 차이점이 헷갈려서 차이점을 검색해 본 결과

 

- indices : 컬렉션의 유효한 인덱스 범위를 나타내는 속성, 보통 반복문에 사용된다. (컬렉션의 모든 요소 접근 유용)

- size : 컬렉션의 요소의 개수를 반환하는 속성, 리스트와 배열 모두 사용할 수 있다.


ㄴ> 배열 문제 기초 중 기초인 평균값 구하기 문제다

class Solution {
    fun solution(numbers: IntArray): Double {
        var answer: Double = 0.0
        var total: Double = 0.0
        
        if(numbers.size in 1..100) {
                for(i in numbers.indices) {
                    if(numbers[i] in 1..1000)
                        total += numbers[i]
                }
            answer = total/numbers.size
        }
        
        return answer
    }
}

 


 

[ Kotlin 문법 간단 정리 (배열) ]

 

  • 배열 선언 방법
// 기본 선언
val array1: IntArray = intArray(1, 2, 3)

// Array 생성자 사용
val array2 = Array(5) { }

// 배열의 크기만 정하여 선언하기
val arrayList = ArrayList<int>(n)

 

class Solution {
    fun solution(num_list: IntArray): IntArray {
        val answer = IntArray(num_list.size)
        // answer 배열의 초기화를 위해 num_list.size만큼의 크기를 가진 배열 선언

 

또는 배열 변수의 크기가 사용자의 입력에 따라 다른 경우 (ex: 함수의 매개변수로 배열의 원소를 받을 때) 배열 변수를 선언할 때 애초에 num_list.size 와 같은 형태로 초기화를 할 수 있다. (초기화하지 않으면 ArrayIndexOutOfBoundsException 에러가 뜸)

 

  • indices 와 size 의 차이점과 쓰임

  - indices : 컬렉션의 유효한 인덱스 범위를 나타내는 속성, 보통 반복문에 사용된다 (컬렉션의 모든 요소 접근 유용)

  - size : 컬렉션의 요소의 개수를 반환하는 속성, 리스트와 배열 모두 사용할 수 있다.