< 문제 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
'앱 개발 > Algorithm' 카테고리의 다른 글
forEachIndexed (가장 가까운 같은 글자) (0) | 2024.03.15 |
---|---|
withIndex (푸드 파이트 대회) (0) | 2024.03.14 |
Destructuring declarations (K번째수) (0) | 2024.03.08 |
문자열 정렬하기 (0) | 2024.03.07 |
mapIndexed (이상한 문자 만들기) (0) | 2024.02.22 |