문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
입출력 예
numbers result
[2,1,3,4,1][2,3,4,5,6,7]
[5,0,2,7][2,5,7,9,12]
function solution(arr){
let result=[];
for(let i=0; i<arr.length-1; i++){
for(let j=i+1; j<arr.length; j++){
result.push(arr[i]+arr[j]);
}
}
let newResult=[];
for(let i=0; i<result.length; i++){
if(!newResult.includes(result[i])){
newResult.push(result[i]);
}
}
return newResult.sort(function(a, b) {
return a - b;
});
}
문제해설
배열의 원소들중 두개를 꺼내 더한 합의 경우의 수를 모두 구하는게 어려웠다
그래서 길이가 5인 배열을 예제로 경우의 수를 모두 써가면서 규칙성을 알아내었음
i=0; i<arr.length-1 i++
i j=i+1; j<arr.length; j++
arr[0]+arr[1]
arr[0]+arr[2]
arr[0]+arr[3]
arr[0]+arr[4]
arr[1]+arr[2]
arr[1]+arr[3]
arr[1]+arr[4]
arr[2]+arr[3]
arr[2]+arr[4]
arr[3]+arr[4]
위 처럼 값을 얻어내려면 이중 포문으로 해당 경우의 수를 모두 가져올수 있는것을 알아 내었다^^...
이후 result에서 중복없는 값만 검사하여 저장할 값을 newResult에 저장해준다!