문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
입출력 예
numbers | result |
---|---|
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
[출처] 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/68644)
function solution(numbers) { var result = []; for(let i=0; i<numbers.length; i++){ for(let j=i+1; j<numbers.length; j++) { result.push(numbers[i]+numbers[j]) // 모든 수를 더해서 나온 값으로 배열 생성 } } var answer = [...new Set(result)]; // 중복값 제거 answer.sort((a, b) => a-b); // 오름차순 정렬 return answer; }
모든 수를 한번씩만 더해서 나온 값을 push를 통해 배열로 만든 후, Set을 이용해 중복값을 제거하고 sort로 오름차순으로 정렬하였다. sort가 배열을 문자열로 인식해 [1,10,2,3] 이런식으로 정렬하는 문제가 발생하여 compareFunction을 입력하여 수정하였다. 비교적 간단한 문제였지만 중복값을 허용하지 않는 Set이라는 object와 sort의 compareFunction을 배울 수 있었다.