정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
function solution(numbers) {
const answer = [];
let sum = 0;
for(let i = 0; i < numbers.length; ++i){
for(let j = i + 1; j < numbers.length; ++j){
sum = numbers[i] + numbers[j];
if(!answer.includes(sum)){
answer.push(sum);
}
}
}
return answer.sort((a,b)=>a-b);
}
그냥 정말 심플하게 배열에 중복된 데이터가 없는 경우에 삽입하는 방법으로 구현 했다.
function solution(numbers) {
const temp = []
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
temp.push(numbers[i] + numbers[j])
}
}
const answer = [...new Set(temp)]
return answer.sort((a, b) => a - b)
}
중복이 허용되지 않는 Set에 배열 데이터로 초기화해서 중복을 제거하고 다시 전개연산자를 이용해서 새로운 배열에 다시 담아주는 것이다. 마지막으로 리턴할 때 오름차순 정렬된 상태로 배열을 반환한다.
중복을 제거하는 방법은 여러가지 있는 것 같다.
Set
에 데이터를 삽입 하고 다시 배열에 담는 방법Array.Filter()
에서 콜백 함수 안에 return Array.indexOf(element) === index
를 통해 찾은 첫번째 인덱스와 현재 인덱스가 같은 경우 반환해서 중복을 제거한다.Array.includes(element)
를 통해 배열에 포함된 데이터 유무를 찾아 중복을 제거할 수 있다.참고 자료 및 사이트 (감사합니다)