앱 개발/Algorithm
Array, Set (두 개 뽑아서 더하기)
lionbae
2024. 3. 11. 19:58
< 문제 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