/*
https://school.programmers.co.kr/learn/courses/30/lessons/68644

๋ฌธ์ œ ์„ค๋ช…
์ •์ˆ˜ ๋ฐฐ์—ด numbers๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. numbers์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์ˆ˜๋ฅผ ๋ฝ‘์•„ ๋”ํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
numbers์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
numbers์˜ ๋ชจ๋“  ์ˆ˜๋Š” 0 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…
์ž…์ถœ๋ ฅ ์˜ˆ #1

2 = 1 + 1 ์ž…๋‹ˆ๋‹ค. (1์ด numbers์— ๋‘ ๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค.)
3 = 2 + 1 ์ž…๋‹ˆ๋‹ค.
4 = 1 + 3 ์ž…๋‹ˆ๋‹ค.
5 = 1 + 4 = 2 + 3 ์ž…๋‹ˆ๋‹ค.
6 = 2 + 4 ์ž…๋‹ˆ๋‹ค.
7 = 3 + 4 ์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ [2,3,4,5,6,7] ์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ž…์ถœ๋ ฅ ์˜ˆ #2

2 = 0 + 2 ์ž…๋‹ˆ๋‹ค.
5 = 5 + 0 ์ž…๋‹ˆ๋‹ค.
7 = 0 + 7 = 5 + 2 ์ž…๋‹ˆ๋‹ค.
9 = 2 + 7 ์ž…๋‹ˆ๋‹ค.
12 = 5 + 7 ์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ [2,5,7,9,12] ๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
*/

const solution = (num) => {
  const arr = [];
  
  // ๊ฐ’ ๋‘๊ฐœ๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•˜๊ธฐ์— ์ด์ค‘ for๋ฌธ ์‚ฌ์šฉ.
  // ๊ฐ’์ด ๊ฒน์น˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด i๋Š” 0๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ -1 ์ž๋ฆฌ๊นŒ์ง€ ๋Œ๊ณ , j๋Š” i + 1๋ฒˆ์งธ๋ถ€ํ„ฐ ๋ฐฐ์—ด ๋๊นŒ์ง€ ๋Œ๊ฒŒ ๋งŒ๋“ฆ
  for (let i = 0; i < num.length - 1; i++) {
    for (let j = i + 1; j < num.length; j++) {
      // sum์— ๊ฐ’์„ ๋”ํ•จ
      let sum = num[i] + num[j];
      // ์‚ผํ•ญ์—ฐ์‚ฐ์ž์™€ includes ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด, ์ด๋ฏธ num[i] + num[j] ๊ฐ’์ด ์žˆ๋‹ค๋ฉด null. ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€์•Š๊ณ , ๊ฐ’์ด ์—†๋‹ค๋ฉด ๋ฐฐ์—ด์— ๊ฐ’์„ ํ‘ธ์‰ฌํ•จ
      arr.includes(num[i] + num[j]) ? null : arr.push(num[i] + num[j]);
    }
  }
  // ํ‘ธ์‰ฌ๋œ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
  arr.sort((a, b) => a - b);
  return arr;
};

console.log(solution([2, 1, 3, 4, 1]));
console.log(solution([5, 0, 2, 7]));

๋ฐฐ์—ด ์ค‘๋ณต๊ฐ’์„ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ์ด๊ฑฐ์ €๊ฑฐ ์‹œ๋„ํ•ด๋ณด๋‹ค๊ฐ€ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด includes ๋ฉ”์„œ๋“œ๋ฅผ ์•Œ์•„๋‚ด ์ ์šฉํ•ด์„œ ํ•ด๊ฒฐ.

๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!