프로그래머스 Lv.1 두 개 뽑아서 더하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function solution(numbers) { let answer = []; for(let i = 0; i < numbers.length-1; i++) { for(let j = i + 1; j < numbers.length; j++) { let a = numbers[i] + numbers[j]; answer.push(a); } } let set = new Set(answer); let result = [...set]; result.sort((a, b) => a - b); return result; } | cs |
이중 반복문을 사용해서
i
는 첫 번째 더하는 수,j
는 두 번째 더하는 수로 한다.
i
는 0부터 전체 길이의 -1까지 반복하고,j
는i+1
부터 전체 길이의 끝까지 반복한다.
numbers[i]
와numbers[j]
를 더해서 빈 배열answer
에 차례대로push
해준다.배열
answer
를Set
을 이용하여 중복을 제거하고, 전개연산자(...
)를 이용하여 다시 배열의 형태로result
에 할당한다.
result
의 순서를 맞춰주기 위해서sort
를 사용하고, a-b를 해줘서 10이상의 숫자가 먼저 정렬되는 것을 방지해준다.a-b가 양수면 a가 더 크기 때문에 b가 앞으로 오게 되고, 음수라면 b가 더 크기 때문에 a가 앞으로 온다.
a-b가 0이라면 수가 같기 때문에 그대로 있는다.