코딩테스트 | (JavaScript) 프로그래머스 : 두 개 뽑아서 더하기

trevor1107·2021년 8월 29일
0

✅문제

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

❕ 제한사항

  • numbers의 길이는 2 이상 100 이하입니다.
    • numbers의 모든 수는 0 이상 100 이하입니다.

🎹📢입출력 예제

✍풀어보기

function solution(numbers) {
    const answer = [];
    let sum = 0;
    for(let i = 0; i < numbers.length; ++i){
        for(let j = i + 1; j < numbers.length; ++j){
            sum = numbers[i] + numbers[j];
            if(!answer.includes(sum)){
                answer.push(sum);    
            }
        }
    }
    return answer.sort((a,b)=>a-b);
}

그냥 정말 심플하게 배열에 중복된 데이터가 없는 경우에 삽입하는 방법으로 구현 했다.


🎈다른 사람의 풀이

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)
}

중복이 허용되지 않는 Set에 배열 데이터로 초기화해서 중복을 제거하고 다시 전개연산자를 이용해서 새로운 배열에 다시 담아주는 것이다. 마지막으로 리턴할 때 오름차순 정렬된 상태로 배열을 반환한다.

중복을 제거하는 방법은 여러가지 있는 것 같다.

  1. 자료구조 Set에 데이터를 삽입 하고 다시 배열에 담는 방법
  2. Array.Filter()에서 콜백 함수 안에 return Array.indexOf(element) === index를 통해 찾은 첫번째 인덱스와 현재 인덱스가 같은 경우 반환해서 중복을 제거한다.
  3. 반복문에서 Array.includes(element)를 통해 배열에 포함된 데이터 유무를 찾아 중복을 제거할 수 있다.


참고 자료 및 사이트 (감사합니다)

profile
프론트엔드 개발자

0개의 댓글