Programmers 두 개 뽑아서 더하기 Javascript

cptkuk91·2022년 6월 23일
1

Algorithm

목록 보기
22/161

두 개 뽑아서 더하기

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

제한사항

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

입출력 예

입출력 예 설명

입출력 예 #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 result = [];
    for(let i = 0; i < numbers.length; i++){
    	for(let j = i + 1; j < numbers.length; j++){
        	let total = numbers[i] + numbers[j];
            if(result.indexOf(total) === -1){
            	result.push(total);
            }
        }
    }
    result.sort((a, b) => a - b);
    return result;
}

중첩 for문을 통해서 numbers[i] + numbers[j]를 전부 더해줍니다.
이때 중복된 숫자가 들어가면 문제 해결이 불가능하기 때문에, total을 선언해 결과값을 먼저 만들어주고, indexOf를 통해 result에 숫자가 이미 존재하는지 확인 후 없는 경우에만 push합니다.

sort의 경우에는 결과값을 정렬해야 했기 때문에 사용했습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글