정수 배열 numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하라.
- 제한조건
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
- Example
function solution(numbers) {
let answer = [];
for(let i = 0; i < numbers.length; i++) {
for(let j = i+1; j < numbers.length; j++) {
answer.push(numbers[i] + numbers[j]);
}
}
return answer.sort((a, b) => a - b).filter((v, i) => answer[i] !== answer[i+1]);
}
📍 풀이과정
- 정수 배열 numbers에서 두 값을 더해 나올 수 있는 모든 값들을 구하기
예시와 같이 numbers가[2,1,3,4,1]
이라면0
번째인2
부터2+1
,2+3
,2+4
,2+1
인 값들을 구한 뒤,1
번째인1
부터 또1+3
,1+4
,1+1
인 값들을 쭉쭉 구해 빈배열 answer에 담아놓는다. 이는 반복문을 중첩시킴으로써 구해낼 수 있었다.
- 오름차순으로 정렬해준 뒤, 중복된 값은 걸러내기
여러값이 담긴 answer를 먼저sort()
로 오름차순 정렬을 해준 뒤,filter()
를 사용해 중복되지 않는 값들만 return하도록 해준다.