[Javascript] (프로그래머스 Level 1) 두 개 뽑아서 더하기

Chaedie·2022년 6월 24일
0

Javascript - PS

목록 보기
21/24
post-custom-banner

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

function solution(numbers) {
  let set = new Set();

  for (let p1 = 0; p1 < numbers.length; p1++) {
      for (let p2 = p1 + 1; p2 < numbers.length; p2++) {
          set.add(numbers[p1] + numbers[p2]);
      }
  }

  let result = [];
  for (let num of set) {
      result.push(num);
  }

  return result.sort((a, b) => a - b);   
}

다른 사람 풀이

function solution(numbers) {
    const temp = []

    for (let i = 0; i < numbers.length; i++) {
        for (let j = i + 1; j < numbers.length; j++) {
            temp.push(numbers[i] + numbers[j])
        }
    }

    const answer = [...new Set(temp)]

    return answer.sort((a, b) => a - b)
}

접근 방법은 똑같다.

하지만 나는 1) 결과를 셋에 담고 2) for ( of ) 로 어레이에 담고 3) sort했다.

다른 풀이는 1) 결과를 배열에 담고 2) ...new Set(temp) 로 중복제거 하고 3) sort했다.

그러면서 for문 하나가 사라졌고, …문 속도는 아직 정확히 모르지만 for문을 날림으로써 O(n)의 속도 향상이 일어났다.

배운 점, 느낀 점

굳굳 ES6+ 를 사용함으로써 라인수도 3줄이 줄고, 속도도 O(n) 만큼 줄었다. 멋져

그리고 하나 더 나는 습관적으로 let으로 초기화하는데, 참조변수 타입은 내부 값이 바뀐다 하더라도 const로 해도 무방하다.
const로 선언해서 안정성을 높이는 방향으로 가자...

profile
TIL Blog - Today's Intensive Learning!
post-custom-banner

0개의 댓글