[Algorithm] 두 개 뽑아서 더하기

fromzoo·2020년 11월 17일

algorithm

목록 보기
5/10
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) {
    var answer = [];

    for(let i = 0; i < numbers.length; i++ ) {
        for(let j = i + 1; j < numbers.length; j++) {
            answer.push(numbers[i] + numbers[j])
        }
    }

    answer = answer.sort((a,b)=>{ return a - b })
    .filter((val,index)=>{
        return val !== answer[index-1]
    })

    return answer
}

풀이 순서 >>
1. 배열에 있는 모든 값을 반복문을 이용해 순서대로 더해주고 answer 배열에 푸시해준다.
2. answer 배열을 sort함수를 이용해 오름차순으로 정렬해준다.
3. 오름차순으로 정렬해줬던 배열을 filter함수를 이용해서 중복된 숫자를 필터링해준다.

profile
프론트엔드 주니어 개발자 🚀

0개의 댓글