정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
최종 코드
class Solution {
fun solution(numbers: IntArray): IntArray{
var answer = intArrayOf()
var numberSet = mutableSetOf<Int>()
for(i in 0 ..numbers.size-1){
for(j in 0.. numbers.size-1){
if(i!=j){
numberSet.add(numbers[i]+numbers[j])
}
}
}
answer = numberSet.sorted().toIntArray()
return answer
}
}
풀이과정
오늘도 아주 간단했다 제공된 정수 배열에서 서로 다른 인덱스의 값을 더해서 나올 수 있는 경우의 수를 다 적으면 되는 문제!
걍 반복문으로 값들 더해주는데, 중복이 없어야되니깐 Set만들어서 알아서 중복 없애게 하면 간단~!
class Solution {
fun solution(numbers: IntArray): IntArray {
val list = numbers.toList()
return list.withIndex().flatMap { i -> list.withIndex().map { j -> i to j } }
.filter { it.first.index != it.second.index }
.map { it.first.value + it.second.value }
.toSortedSet()
.toIntArray()
}
}
람다식으로 되어있는데다가… flatMap 까지 있어서 너무어려움!!!
흠..근데 아무튼 filter로 첫번째 인덱스랑 두번째 인덱스가 다른 애들만 걸러서 걔네의 값을 더한걸 새로운 컬렉션으로 만들어준다음에, toSortedSet()을 사용해서 중복을 제거해주면서 정렬해준 듯
class Solution {
fun solution(numbers: IntArray): IntArray {
val answers: MutableList<Int> = arrayListOf()
var sum: Int
var i = 0
var j = 0
while (i < numbers.size - 1) {
j = i + 1
while (j < numbers.size) {
sum = numbers[i] + numbers[j]
answers.add(sum)
j++
}
i++
}
answers.sort()
return answers.distinct().toIntArray()
}
}
흠 일단 비슷한데 중복제거를 Set으로 안하고 distinct()라는 함수를 씀
distinct라는걸 처음 봐서 검색해봤는데 배열이나 리스트에서 중복된 값을 제거해주는 것 같음!