개발/알고리즘(코딩테스트)

프로그래머스, 자바스크립트) 두 개 뽑아서 더하기

빔네모 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]