본문 바로가기
[항해99] TIL

9일차 (알고리즘5)

by @kkkk_biiin 2023. 8. 24.
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