두 개 뽑아서 더하기(Javascript)

·2022년 9월 23일
0
post-thumbnail

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

제한사항

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

입출력 예

numbersresult
[2,1,3,4,1][2,3,4,5,6,7]
[5,0,2,7][2,5,7,9,12]

입출력 예 설명

입출력 예 #1

2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.)
3 = 2 + 1 입니다.
4 = 1 + 3 입니다.
5 = 1 + 4 = 2 + 3 입니다.
6 = 2 + 4 입니다.
7 = 3 + 4 입니다.
따라서 [2,3,4,5,6,7] 을 return 해야 합니다.

입출력 예 #2

2 = 0 + 2 입니다.
5 = 5 + 0 입니다.
7 = 0 + 7 = 5 + 2 입니다.
9 = 2 + 7 입니다.
12 = 5 + 7 입니다.
따라서 [2,5,7,9,12] 를 return 해야 합니다.

나의 풀이

function solution(numbers) {

    let plus = new Set();

    for (i = 0; i< numbers.length; i++){
        for(j = 0; j< numbers.length; j++){
            if (i !== j)
            plus.add(numbers[i] + numbers[j])
            }
        }
    return [...plus].sort((a,b)=>a-b);;
}

set 객체를 이용해서 중복해서 값이 들어가는 것을 막아 줬다.

set에 넣어줘야 하기 때문에 함수 add()를 이용했다. add()는 set 객체에 값을 추가해 주는 함수이다. 반복문을 중첩해서 사용하여 배열의 값을 뽑아 더해 주었다. 이 때, 다른 인덱스를 뽑아야 하므로 numbers[i]!==numbers[j]라는 조건을 주었다.

set에 넣은 뒤 spread operator에 넣어 set을 배열로 변환 시켜주었다. 이후 순서대로 정렬하기 위해 sort()를 이용해 주었다.

참고할 풀이

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

나와 동일하게 풀었으나 처음에 값을 배열로 정의한 다음, push로 값을 추가한 다음에 나중에 Set 객체로 바꾸어 주었다.

profile
전 이것도 몰라요

0개의 댓글

관련 채용 정보