본문 바로가기
알고리즘

두 개 뽑아서 더하기

by 코딩달림 2022. 11. 7.
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 객체는 다음과 같은 특징을 가진다.
  1.  동일한 값을 중복하여 포함할수 없다.
  2.  요소 순서에 의미가 없다.
  3.  인덱스로 요소에 접근할 수 없다.

이러한 set 객체는 수학적 집합을 구현하기위한 자료구조이다.
그래서 set을 통해 교집합, 합집합, 차집합, 여집합 등을 구현할 수 있다.

'알고리즘' 카테고리의 다른 글

시저 암호  (3) 2022.11.09
수박수박수박수박  (2) 2022.11.07
내적  (3) 2022.11.05
음양 더하기  (2) 2022.11.05
없는 수 더하기  (1) 2022.11.04

댓글


광고 준비중입니다.