programmers) 두 개 뽑아서 더하기

Yeonn·2024년 8월 23일
0

coding test

목록 보기
9/13
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]

🌱 내 코드

const solution = (numbers) => {
  let result = [];
  for(let i = 0; i < numbers.length-1; i ++){
    for(let j = i + 1; j < numbers.length; j++){
      result.push(numbers[i]+numbers[j]);
    };
  };
  
  return [...new Set(result)].sort((a, b) => a - b);
};
  • 빈 배열 result 선언
  • for 문으로 numbers 배열을 순회하면서 두 숫자의 합을 구해 resultpush
    • i 는 기준이 되는 숫자
    • ji 의 다음 숫자 !
  • new Set 으로 중복 값을 없애주고 sort 로 정렬하여 반환

    🪴 new Set() spread 연산자 Array.sort()

🌱 다른 사람 풀이

function solution(numbers) {
    var answer = [];

    numbers.forEach((v) => {
        const num1 = numbers.slice();

        let a = num1.indexOf(v);
        num1.splice(a, 1);

        num1.forEach((z) => {
            let num2 = v + z;

            if (!answer.includes(num2)) {
                answer.push(num2);
            }
        });
    });

    return answer.sort((a, b) => a - b);
}
  • 빈 배열 answer 선언
  • num1로 원본 배열 얕은 복사
  • indexOf(v)splice(a,1)로 배열 num1에서 해당하는 숫자 제거
  • 남은 요소들과 a의 합을 계산하고 includes로 중복 값이 없을 경우에만 answer에 추가
    sort로 정렬하여 반환

    🪴 Array.forEach() Array.indexOf() Array.splice(a, b) Array.includes() Array.sort()


0개의 댓글