Algorithm

[JS] 프로그래머스 lv1. 두 개 뽑아서 더하기

judahhh 2023. 1. 10. 13:38
728x90

문제 설명

  • 정수 배열 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]

입출력 예 설명

  • 입출력 예 #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 해야 합니다.

 

나의 풀이

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])
}

    return [...new Set(answer.sort((a,b)=>a-b))]
}

풀이 전략

  1. 이중 반복문으로 numbers배열 순회, i가 0이면 j는 1부터 시작하는 식으로 순회함
  2. 새로 선언한 answer배열에 i인덱스와 j인덱스의 배열 값의 합을 push
  3. 다른 조건문 없이 합을 전부 push 했으므로 중복되는 값이 있을것이니 answer을 sort한 후 […new Set()] 을 이용해 중복을 제거하고 return
728x90