728x90
반응형
문제 설명
정수 배열 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] |
작성한 코드
/**
* @param numbers
* @returns {*[]}
*/
function solution(numbers) {
const arr = [];
for(let i = 0; i < numbers.length; i++) {
for(let j = i + 1; j < numbers.length; j++) {
let sum = numbers[i] + numbers[j];
if(arr.indexOf(sum) === -1) {
arr.push(sum);
}
}
}
arr.sort((a, b) => a - b);
return arr;
}
- indexOf( )
이중 for문을 사용하여 0번째 인덱스와 1번째 인덱스의 값을 더한다.
이때, 중복값 저장을 피하기 위하여 indexOf() 함수를 이용하여 배열내에 합이 존재하지 않을 경우에만 push해준다.
마지막으로 오름차순 정렬을 해줘야하므로 sort()를 통하여 정렬.
Set을 활용한 다른 코드
// SET 활용
function solution2(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)
}
다른 사람 풀이 보니까 Set과 스프레드 연산자를 통하여 처리하였다...
Set을 통하여 중복값을 제거하고 연산자를 사용하여 값을 다 나열해준 뒤 정렬.
728x90
반응형
'CS > 알고리즘' 카테고리의 다른 글
[Javascript] 2016년 (0) | 2022.02.26 |
---|---|
[Javascript] 예산 (0) | 2022.02.19 |
[Javascript] 3진법 뒤집기 (0) | 2022.02.01 |
[Javascript] 약수의 개수 덧셈 (0) | 2022.02.01 |
[Javascript] 실패율 (0) | 2022.01.17 |