문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한 조건
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
📄 문제
function solution(numbers) {
var answer = [];
return answer;
}
💻 내가 쓴 코드
function solution(numbers) {
var answer = [];
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
let sum = numbers[i] + numbers[j];
if (answer.indexOf(sum) === -1) {
answer.push(sum);
}
}
}
answer.sort(function (a, b) {
return a - b;
});
return answer;
}
💻 다른 풀이
function solution(numbers) {
const temp = []
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
temp.push(numbers[i] + numbers[j])
}
}
const answer = [...new Set(temp)]
return answer.sort((a, b) => a - b)
}
📚 배운 점
answer.indexOf(sum) 값이 -1 이 된다는 뜻은 sum값이 answer에 값이 존재하지 않음을 의미한다. 그리고 다른사람이 적은 코드를 봤을 때 set 메서드를 사용하여 중복을 허용하지 않고 set에 값을 추가하여 문제를 풀수 있다는 것을 배웠습니다.