728x90
이번 문제는 배열을 돌면서 각각의 값들을 더한 뒤, 중복된 값들을 제거하고 오름차순으로 정렬하는 문제이다.
// https://school.programmers.co.kr/learn/courses/30/lessons/68644
// 두 개 뽑아서 더하기
function solution(numbers) {
var answer = [];
let set = new Set();
// numbers 반복
for (let i = 0; i < numbers.length; i++) {
// 첫 번째 값 고정
let fixed = numbers[i];
// 나머지 값들 돌면서 첫 번째 값과 더하기
for (let j = i + 1; j < numbers.length; j++) {
let sum = fixed + numbers[j];
// set에 추가
set.add(sum);
}
}
// set을 리스트로 변환 및 정렬 후 출력
answer = [...set].sort((comp1, comp2) => comp1 - comp2);
return answer;
}
문제의 전반적인 흐름은 첫 번째 반복문을 통해 하나의 값(fixed)를 고정한 뒤, 두 번째 반복문을 돌면서 fixed값과 더했다. 그리고 이렇게 더한 값을 set에 넣는 방식을 사용하였다. set은 순서가 없기 때문에 정렬이 불가능 하다. 그래서 스프레드 연산자를 사용하여 새로운 배열로 만든 뒤 정렬을 하였다.
문제를 풀면서 더 쉬운 방법이 항상 있을 것 같다는 생각이 들지만.. for문과 if문 밖에 생각이 나지 않는다... 많이 풀다 보면 되겠지 ㅠ
728x90
'[항해99] TIL' 카테고리의 다른 글
11일차 (SEO, CRA, Component, Props, 불변성) (0) | 2023.08.25 |
---|---|
10일차 (알고리즘6) (0) | 2023.08.25 |
8일차 (알고리즘4) (0) | 2023.08.22 |
7일차 (알고리즘3) (2) | 2023.08.22 |
2주차 WIL(ES6 문법) (0) | 2023.08.22 |