#문제
정수 배열 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] |
#풀이
(1) numbers 내 두 수를 더한 결과를 모두 저장한다.
(2) set으로 변환한다.
(3) sort()로 오름차순 정렬한다.
function solution(numbers) {
var answer = [];
for (i = 0; i < numbers.length; i++) {
for (j = 0; j < i; j++) {
answer.push(numbers[i] + numbers[j]);
}
}
return [...new Set(answer)].sort((a, b) => a - b);
}
#아쉬운 점, 알게 된 점
반복문에 대해 의도했던 것은 j가 i + 1부터 시작해 numbers.length까지 도는 거였는데 위의 방식으로도 모든 수를 구할 수 있었다.
의도대로 구현하지 못한 것은 j의 조건문을 잘못 설정해서 틀렸기 때문이다..
아래는 본래 의도대로의 코드. (변한 건 조건문밖에 없다)
function solution(numbers) {
var answer = [];
for (i = 0; i < numbers.length; i++) {
for (j = i + 1; j < numbers.length; j++) {
answer.push(numbers[i] + numbers[j]);
}
}
return [...new Set(answer)].sort((a, b) => a - b);
}