[프로그래머스] 두 개 뽑아서 더하기 (JavaScript)
ETC/코딩테스트 연습

[프로그래머스] 두 개 뽑아서 더하기 (JavaScript)

문제 설명

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

제한사항

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

설명 더 보기

두 개 뽑아서 더하기 (JavaScript)


문제 풀이

function solution(numbers) {
    const answer = [];
    
    // 반복문 1. 배열 numbers의 원소 수만큼 i를 반복
    for (let i = 0; i < numbers.length; i++) {
    // 반복문 2. i가 반복될 때 j는 i와의 중복을 피하는 방향으로 반복
        for (let j = i + 1; j < numbers.length; j++) {
    // i번째 수와 j번째 수의 합을 answer에 추가
            answer.push(numbers[i] + numbers[j]);
        }
    }
    
    // 반복문의 결과를 오름차순으로 정렬
    answer.sort((a, b) => a - b);
    
    // 중복되는 값 제거 및 최종 답안 제출
    let uniqueAnswer = [...new Set(answer)];
    return uniqueAnswer;
}

하나의 정수 배열 numbers에서 서로 다른 두 개의 수를 뽑아 더하기 위해, 반복문을 중첩할 때 두 수의 인덱스가 겹치지 않게끔 j의 초기화문을 i + 1로 설정하였다. 그렇게 더해서 만든 모든 수가 배열 answer에 담기면, 그 수들을 오름차순으로 정렬하기 위해 sort() 메서드를 사용하였고, 중복되는 값이 발생했을 경우를 대비해 Set 객체를 활용해 새로운 배열 uniqueAnswer에 중복되는 값 없이 담아주었다.

"이때, 1) 중복되는 값을 먼저 제거한 뒤에 2) 오름차순으로 정렬했다면 보다 효율적인 코드가 될 수 있었을 것!"이라는 피드백