🧬알고리즘/Programmers

[JavaScript] 두 개 뽑아서 더하기

뉴발자 2024. 8. 29. 19:57
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제

정수 배열 numbers가 매개변수로 주어진다.

 

numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 반환하는 함수를 작성하라.

 

 

나의 풀이

function solution(numbers) {
  const result = [];
    
  for (let i = 0; i < numbers.length; i++) {
    for (let j = i+1; j < numbers.length; j++) {
      result.push(numbers[i] + numbers[j]);
    }
  }
    
  return Array.from(new Set(result)).sort((a, b) => a - b);
}

 

 

풀이 방법

1. 이중 for() 문을 사용해서 모든 원소를 순회하면서 나올 수 있는 합을 result 배열에 넣어준다.

function solution(numbers) {
  const result = [];
  
  // 1
  for (let i = 0; i < numbers.length; i++) {
    for (let j = i+1; j < numbers.length; j++) {
      result.push(numbers[i] + numbers[j]);
    }
  }
}

// numbers: [2, 1, 3, 4, 1]
// i = 0, 3(2+1), 5(2+3), 6(2+4), 3(2+1)
// i = 1, 4(1+3), 5(1+4), 2(1+1)
// i = 2, 7(3+4), 5(4+1)
// i = 3, 5(4+1)
// result = [3, 5, 6, 3, 4, 5, 2, 7, 5, 5]

 

2. Set() 함수를 사용해서 중복 값을 모두 제거해준다.

new Set(result)

 

3. Array.from() 함수를 사용해서 Set() 값을 배열로 만들어주고 sort() 함수로 오름차순 정렬한다.

return Array.from(new Set(result)).sort((a, b) => a - b);

 

 

 

 

 

 

 

 

 

 

728x90