ふたつ引いてから足す


https://programmers.co.kr/learn/courses/30/lessons/68644
let numbers = [2, 1, 3, 4, 1]

function solution(numbers) {
let answer = [];

  //

for (let i =0; i < numbers.length; i++){
  for (let j = i+1; j < numbers.length; j++){
    // 서로 다른 인덱스
  
    if(!answer.includes(numbers[i]+numbers[j])) {
      answer.push(numbers[i]+numbers[j]);
          } console.log(numbers[i]+numbers[j])
    } console.log(answer)
}
    answer.sort((a,b)=>a-b) 
    return answer;
}

console.log(solution(numbers)) //[ 2, 3, 4, 5, 6, 7 ]
[0]+[1]、[0]+[2]の順に要素を追加し、結果が重複しないようにします.
答えに[i]+[j]と同じ値がない場合は、それを入れます.
console.log(numbers[i]+numbers[j])
3 [0]+[1]
5 [0]+[2]
6 [0]+[3]
3 [0]+[4]
4 [1]+[2]
5 [1]+[3]
2 [1]+[4]
7 [2]+[3]
4 [2]+[4]
5 [3]+[4]
console.log(answer)
[ 3, 5, 6 ]
[ 3, 5, 6, 4, 2 ]
[ 3, 5, 6, 4, 2, 7 ]
[ 3, 5, 6, 4, 2, 7 ]
.sort((a,b)=>a-b) 오름차순 공식으로 외우는 게 좋을 것 같다.
.sort((a,b)=>b-a) 내림차순

[ 3, 5, 6, 4, 2, 7 ]
여기에서 a가 뭐고 b가 뭔지 고민을 했는데

3-5 = -2
3 5
3-6 = -3
3 6
3-4 = -1
3 4
3-2 = 1
2 3 
3-7 = -4
3 7
5-6 = -1
5 6
5-4 = 1
4 5
5-2 = 3
2 5
///

[2, 3, 4, 5, ///]
이런 식으로 배열 안 요소의 크기를 비교해서 정렬 해주는 것 같다.

이 함수가 리턴하는 값이 0보다 작을 경우, a가 b보다 앞에 오도록 정렬하고,
이 함수가 리턴하는 값이 0보다 클 경우, b가 a보다 앞에 오도록 정렬합니다.
만약 0을 리턴하면, a와 b의 순서를 변경하지 않습니다.
출처: https://hianna.tistory.com/409 [어제 오늘 내일]