정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
입출력 예 #1
[2,3,4,5,6,7]
을 return 해야 합니다.const numbers = [1, 2, 3, 4, 5];
let answer = [];
function makeNumber() {
let temp = [];
for (let j = 0; j < 2; j++) {
let picked = numbers.pop();
temp.push(picked); // 2. 숫자 2개를 뽑아서 빈 배열에 넣기
}
const sum = temp.reduce((stack, el)=>{
return stack + el;
}, 0); // 3. 빈 배열의 원소 2개의 합을 더한 값을 다시 빈 배열(answer)에 넣기
answer.push(sum);
}
하지만 위와 같은 방식으로 문제를 진행하기에 문제가 몇가지가 발생하는데,
참고 링크 : JavaScript - 배열에서 값 추출, 추가하기
function solution(numbers) {
const answer = [];
for (let i = 0; i < numbers.length; i++) {
for (let j = 0; j < numbers.length; j++) {
if (i !== j) {
answer.push(numbers[i]+numbers[j]);
}
}
}
뗴문에, 중복값을 제거해주는 메소드를 사용해줘야 한다. 이후 배열을 오름차순으로 정렬하면 문제 해결!
https://velog.io/@awesomelon/배열에서-중복값-제거하는-방법JS
const result = Array.from(new Set(answer));
result.sort((a, b) => a - b);
return result
}
function solution(numbers) {
const answer = [];
for (let i = 0; i < numbers.length; i++) {
for (let j = 0; j < numbers.length; j++) {
if (i !== j) {
answer.push(numbers[i]+numbers[j]);
}
}
}
const result = Array.from(new Set(answer));
result.sort((a, b) => a - b);
return result
}
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)
}