본문 바로가기
알고리즘/프로그래머스

[자바스크립트/알고리즘] 프로그래머스 - 두 개 뽑아서 더하기

by 프론트엔드 지식백과 2021. 1. 25.

문제

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

 

제한 사항

numbers의 길이는 2 이상 100 이하입니다.

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

 

[나의 풀이]

function solution(numbers) {
    let 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) < 0){
                answer.push(sum)
            }
        }
    }
    return answer.sort((a, b)=>a-b)
}

indexOf를 이용하여 중복된 값을 제거했다.

 

[다른 사람 풀이]

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 객체를 이용하였다.

Set 객체는 자료형에 관계없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있다는 특징이 있다.

 

 

Set의 사용법을 잘 몰랐는데, 이렇게 쓸 수 있다니 놀랍다!

728x90