TIL9: [알고리즘] 두 개 뽑아서 더하기
문제
정수 배열 numbers가 주어집니다.
numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
입출력 예시
| s | return |
| [2,1,3,4,1] | [2,3,4,5,6,7] |
| [5,0,2,7] | [2,5,7,9,12] |
나의 풀이
function solution(numbers) {
const newArr = [];
for(let i = 0; i < numbers.length; i++) {
for(let j = i+1 ; j < numbers.length; j++) {
newArr.push(numbers[i] + numbers[j])
}
}
const newSet = new Set(newArr);
const uniqArr = [...newSet];
return uniqArr.sort((a,b) => a-b);
}
1) 반복문을 2번 사용해 새로운 배열에 합한 값을 넣는다.
2) new Set()을 사용하여 반복을 제거한다.
3) array.sort((a,b) => a-b)를 사용해서 오름차순을 한다.
다른사람의 풀이
function solution(numbers) {
let answer = [];
//배열의 두개 요소를 뽑아 덧셈한 모든 경우의 수를 구한다.
//중복된 값은 제거한다.
//배열값을 리턴한다.
for(let i=0; i<numbers.length-1; i++){
for(let j=i+1; j<numbers.length; j++){
if(answer.indexOf(numbers[i]+numbers[j])===-1){
answer.push(numbers[i]+numbers[j])
}
}
}
return answer.sort((a,b)=>a-b);
}
arr.indexOf(searchElement[, fromIndex]) : 배열내 요소가 있으면 해당 인덱스를 반환하고 없으면 ‘-1’을 반환하다.
1) 배열의 두개 요소를 뽑아 덧셈한 모든 경우의 수를 구한다.
2) 중복된 값이 없으면(반환 값이 -1이면), push로 더한 값을 넣는다.
댓글남기기