[Level1] 두 개 뽑아서 더하기

JMinkyoung·2021년 4월 29일
0

Programmers

목록 보기
29/32
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]

문제 풀이

첫번째 인덱스를 이용해서 numbers[0] 부터 numbers[마지막-1] 까지 돌고 두번째 인덱스는 첫번째 인덱스+1로 설정하여 numbers[첫번째 인덱스] 이후의 값들을 반환하도록 했다. 이렇게 하면 첫번째 인덱스 값이 커져도 그 전의 값들 끼리의 합은 이미 계산되어 answer 배열에 들어갔기 때문에 다른 조합들만 계산되게 된다.

더한 값들을 answer 배열에 넣는 과정에서는 배열에 찾고자 하는 숫자의 인덱스가 없으면 -1을 return 하는 배열.indexOf(숫자) 를 이용하여 중복 여부를 체크하였다.

마지막으로는 sort 함수를 이용하여 오름차순으로 정렬 해 주었다.

정답 코드 (내 풀이)

function solution(numbers) {
    let answer = [];
    for(let i=0; i<numbers.length-1; 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((a,b)=>a-b);
    return answer;
}
profile
Frontend Developer

0개의 댓글