개발/알고리즘(코딩테스트)
프로그래머스, 자바스크립트) 두 개 뽑아서 더하기
빔네모
2024. 11. 19. 23:04
문제
https://school.programmers.co.kr/learn/courses/30/lessons/68644?language=javascript
풀이
우선 중복을 제거하기 위해 집합을 만든다.
배열을 이중반복으로 돌면서 두 가지 수를 모두 뽑아 더해준 후 집합에 넣는다 (중복은 걸러짐)
집합을 다시 배열로 변환 후 오름차순으로 정렬한다.
function solution(numbers) {
const uniqueSums = new Set(); // 중복 제거용 Set
const n = numbers.length;
for (let i = 0; i < n; i++) {
for (let j = i + 1; j < n; j++) {
uniqueSums.add(numbers[i] + numbers[j]); // 바로 Set에 추가
}
}
// Set을 배열로 변환 후 정렬
return [...uniqueSums].sort((a, b) => a - b);
}
// 테스트
console.log(solution([2, 1, 3, 4, 1])); // [2, 3, 4, 5, 6, 7]
console.log(solution([5, 0, 2, 7])); // [2, 5, 7, 9, 12]