[알고리즘 문제풀이]두 개 뽑아서 더하기

😎·2022년 11월 21일
0

알고리즘 문제풀이

목록 보기
23/27

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

제한사항
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
입출력 예
numbers result
[2,1,3,4,1][2,3,4,5,6,7]
[5,0,2,7][2,5,7,9,12]

내가 작성한 코드

function solution(arr){
 let result=[];
   for(let i=0; i<arr.length-1; i++){
   for(let j=i+1; j<arr.length; j++){
      result.push(arr[i]+arr[j]);
   }
 }
 let newResult=[];
   for(let i=0; i<result.length; i++){
      if(!newResult.includes(result[i])){
         newResult.push(result[i]);
      }
   }
   return newResult.sort(function(a, b)  {
      return a - b;
    });
}

문제해설
배열의 원소들중 두개를 꺼내 더한 합의 경우의 수를 모두 구하는게 어려웠다
그래서 길이가 5인 배열을 예제로 경우의 수를 모두 써가면서 규칙성을 알아내었음

i=0; i<arr.length-1 i++

    i    j=i+1; j<arr.length; j++     
arr[0]+arr[1]
arr[0]+arr[2]
arr[0]+arr[3]
arr[0]+arr[4]

arr[1]+arr[2]
arr[1]+arr[3]
arr[1]+arr[4]

arr[2]+arr[3]
arr[2]+arr[4]

arr[3]+arr[4]

위 처럼 값을 얻어내려면 이중 포문으로 해당 경우의 수를 모두 가져올수 있는것을 알아 내었다^^...
이후 result에서 중복없는 값만 검사하여 저장할 값을 newResult에 저장해준다!

profile
개발 블로그

0개의 댓글