728x90
프로그래머스 : 두 개 뽑아서 더하기
배열 안에서 중복되지 않는 경우의 수를 전부 구하는 문제입니다.
문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
1. numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
입출력 예
numbers | 결과 |
---|---|
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
1. 해설
소스보기
function solution(numbers) {
let answer = [ ];
for(let i=0; i < numbers.length; i++){
for(let j=i+1; j < numbers.length; j++){
answer.push(numbers[i]+numbers[j]);
}
}
return [...new Set(answer)].sort(function(a,b){return a-b});
}
이중 for문을 사용해 배열에서 2개의 수가 더해지는 모든 경우의 수를 구해 push( ) 메서드로 새 배열을 구합니다.
구한 배열값은 다시 중복되지 않는 수만 선택해 새 배열로 만드는 Set( )메서드를 사용하고 이 값을 sort로 정렬하면 정답이 됩니다.
※ Set( ) 메서드
set 객체는 중복되지 않는 유일한 값들의 집합이다.
set 객체는 다음과 같은 특징을 가진다.
이러한 set 객체는 수학적 집합을 구현하기위한 자료구조이다.
그래서 set을 통해 교집합, 합집합, 차집합, 여집합 등을 구현할 수 있다.
set 객체는 다음과 같은 특징을 가진다.
- 동일한 값을 중복하여 포함할수 없다.
- 요소 순서에 의미가 없다.
- 인덱스로 요소에 접근할 수 없다.
이러한 set 객체는 수학적 집합을 구현하기위한 자료구조이다.
그래서 set을 통해 교집합, 합집합, 차집합, 여집합 등을 구현할 수 있다.
댓글