본문 바로가기
💻JavaScript/코딩테스트

두 개 뽑아서 더하기(Add two numbers)

by 영진학생 2025. 1. 13.

문제 설명

 

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

 

 

제한 조건

 

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

 

 

📄 문제

function solution(numbers) {
    var answer = [];
    return answer;
}

 

 

💻 내가 쓴 코드

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

 

 

💻 다른 풀이

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

 

 

📚 배운 점

answer.indexOf(sum) 값이 -1 이 된다는 뜻은 sum값이 answer에 값이 존재하지 않음을 의미한다. 그리고 다른사람이 적은 코드를 봤을 때 set 메서드를 사용하여 중복을 허용하지 않고 set에 값을 추가하여 문제를 풀수 있다는 것을 배웠습니다.