본문 바로가기

앱 개발/Algorithm

Array, Set (두 개 뽑아서 더하기)

< 문제 49번 >

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

 

< solution >

 

class Solution {
    fun solution(numbers: IntArray): IntArray {
        require(numbers.size in 2..100 && numbers.all { it in 0..100 })
        val answer = mutableSetOf<Int>()  // 수정 가능한 정수 set 생성

        for (i in 0 until numbers.size - 1) {
            for (j in i + 1 until numbers.size) {

 

                // numbers 배열의 두 요소를 뽑아서 더한 값을 중복이 제거되는 answer set에 추가
                answer.add(numbers[i] + numbers[j])
            }
        }


        return answer.sorted().toIntArray()  // 결과값 set을 오름차순 정렬하고 정수 배열로 변환
    }
}

 

 

< Array와 Set 비교 >

 

Array와 Set은 모두 Kotlin의 데이터 컬렉션이지만 다음과 같은 차이가 있다.

Array: arrayOf, intArrayOf, doubleArrayOf 등과 같은 함수를 사용하여 배열을 생성하고 필요에 따라 크기를 조절할 수 있다. 그리고 각 요소에 정수 인덱스를 사용하여 순서가 있는 요소를 저장하며 동일한 요소를 중복하여 포함할 수 있다.

Set: setOf, mutableSetOf 등을 사용하여 요소를 추가하거나 제거할 수 있지만 크기 자체는 변경되지 않는다. 그리고 중복된 요소를 허용하지 않는다.

요약하면 일반적으로 배열은 순서가 있는 데이터를 저장하거나 접근할 때 사용되고, Set은 중복을 허용하지 않는 고유한 값을 저장하거나 검색할 때 사용된다. 또한 배열은 요소에 대한 인덱스를 사용하여 빠르게 액세스할 수 있지만, Set은 특정 요소를 검색할 때 효과적이다.

728x90