차차로그
[JS] 월간 코드 챌린지 시즌1 > 두 개 뽑아서 더하기 본문
정수 배열 numbers가 주어집니다.
numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
function solution(numbers) {
var answer = [];
for(var i = 0; i < numbers.length; i++){
for(var j = i+1; j < numbers.length; j++){
var sum = numbers[i] + numbers[j];
answer.push(sum);
}
}
const set = new Set(answer); // Set { 5, 7, 12, 2, 9 }
const arr = [...set];
arr.sort(function(a, b) {
if(a > b) return 1;
if(a === b) return 0;
if(a < b) return -1;
});
return arr;
}
나의 문제 풀이
서로 다른 인덱스에 있는 두 수를 더해야 하기 때문에 일단 answer배열에 모든 합을 push로 담는다.
서로 다른 인덱스기 때문에 내부 반복은 외부 인덱스보다 1이 큰 상태로 돌렸다.
set()을 사용하면 중복 값을 제거할 수가 있다.
set()처리를 하면 객체에 담기게 되어 다시 배열로 담기 위해 전개연산자(...)를 이용해 새로운 배열에 담아줬다.
오름차순으로 배열을 정렬해야 하기 때문에 sort()를 사용해 오름차순 정렬을 했다.
채점 결과는 통과!
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)
}
다른 사람 풀이
이중 for문 돌리는 거는 같은데 set처리와 sort 처리를 간단하게 해서 더 깔끔해보인다.
sort((a,b) => a, b) 가 오름차순 정렬이 되는 것이 신기
자주 쓰는 함수니까 사용법 익혀두기!!!
'코딩테스트' 카테고리의 다른 글
[JS] 월간 코드 챌린지 시즌2 > 약수의 개수와 덧셈 (0) | 2022.08.12 |
---|---|
[JS] 월간 코드 챌린지 시즌1 > 3진법 뒤집기 (0) | 2022.08.12 |
[JS] 월간 코드 챌린지 시즌1 > 내적 (0) | 2022.08.12 |
[JS] 월간 코드 챌린지 시즌3 > 없는 숫자 더하기 (0) | 2022.08.12 |
[JS] 월간 코드 챌린지 시즌2 > 음양 더하기 (0) | 2022.08.12 |
Comments