정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
주절주절....ㅎ.... 어떻게든 기초지식으로 통과는 했다!
function solution(numbers) {
var answer = [];
let arr = [];
for (let i=0; i< numbers.length; i++){
for (let j=i+1; j<numbers.length; j++){
let sum = numbers[i]+numbers[j];
arr.push(sum);
}
}
for (let k=0; k<arr.length; k++){
if (answer.indexOf(arr[k]) === -1)
answer.push(arr[k])
}
answer.sort(function(a, b){ return a-b; });
return answer;
}
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)
}
function solution(numbers) {
var answer = [];
//들어온 배열의 요소를 확인한다.
//배열의 두개 요소를 뽑아 덧셈한 모든 경우의 수를 구한다.
//중복된 값은 제거한다.
//배열값을 리턴한다.
for(let i=0; i<numbers.length-1; i++){
for(let j=i+1; j<numbers.length; j++){
if(answer.indexOf(numbers[i]+numbers[j])===-1){
answer.push(numbers[i]+numbers[j])
}
}
}
return answer.sort((a,b)=>a-b);
}
Set 기능 알아두기 !
처음에 sort()
로 배열을 오름차순으로 정렬하려고 했는데 비교함수를 지정하지 않고 기본 sort()
만 호출했을 때는 문자열 비교를 한다. 숫자 비교를 하려면 비교함수를 지정해야 한다.
숫자 정렬
var score = [4, 11, 2, 10, 3, 1];
/* 오류 */
score.sort(); // 1, 10, 11, 2, 3, 4
// ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음
/* 정상 동작 */
score.sort(function(a, b) { // 오름차순
return a - b; //음수가 나오면 a가 b보다 작다
// 1, 2, 3, 4, 10, 11
});
score.sort(function(a, b) { // 내림차순
return b - a;
// 11, 10, 4, 3, 2, 1
});