문제 설명
정수 배열 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]
첫번째 인덱스를 이용해서 numbers[0] 부터 numbers[마지막-1] 까지 돌고 두번째 인덱스는 첫번째 인덱스+1로 설정하여 numbers[첫번째 인덱스] 이후의 값들을 반환하도록 했다. 이렇게 하면 첫번째 인덱스 값이 커져도 그 전의 값들 끼리의 합은 이미 계산되어 answer 배열에 들어갔기 때문에 다른 조합들만 계산되게 된다.
더한 값들을 answer 배열에 넣는 과정에서는 배열에 찾고자 하는 숫자의 인덱스가 없으면 -1을 return 하는 배열.indexOf(숫자)
를 이용하여 중복 여부를 체크하였다.
마지막으로는 sort 함수를 이용하여 오름차순으로 정렬 해 주었다.
function solution(numbers) {
let answer = [];
for(let i=0; i<numbers.length-1; i++){
for(let j=i+1; j<numbers.length; j++){
let sum = numbers[i] + numbers[j];
if(answer.indexOf(sum)===-1){
answer.push(sum);
}
}
}
answer.sort((a,b)=>a-b);
return answer;
}