본문 바로가기
Algorithm

[프로그래머스] 두 개 뽑아서 더하기 (JS, Python)

by YGSEO 2021. 1. 25.
728x90

Javascript

function onlyUnique(value, index, self) {
  return self.indexOf(value) === index;
}

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

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

여기서 duplicates를 제거하는 방법을 stackoverflow에서 찾아서 했는데

Set자료형을 Javascript에서도 사용하는 방법을 검색하다가 처음보는 spread syntax를 발견.

 

Spread syntax (...)

allows an iterable such as an array expression or string to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected, or an object expression to be expanded in places where zero or more key-value pairs (for object literals) are expected.

Description

Spread syntax can be used when all elements from an object or array need to be included in a list of some kind. 

 

// Use to remove duplicate elements from the array

const numbers = [2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5]

console.log([...new Set(numbers)])

// [2, 3, 4, 5, 6, 7, 32]

set 자료형을 이용해서 중복을 제거하고 다시 bracket을 사용해서 array로 만든 후 정렬 메서드를 사용

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

  answer = [...new Set(answer)].sort((a, b) => a - b)
  
  return answer;
}

Python

def solution(numbers):
  answer = []

  for i in range(len(numbers)):
    for j in range(i+1, len(numbers)):
      answer.append(numbers[i]+numbers[j])
  
  answer = list(set(answer))
  answer.sort()
  return answer

[Later]

What is "new" in JS?

 

ref

velog.io/@jakeseo_me/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%9D%BC%EB%A9%B4-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-33%EA%B0%80%EC%A7%80-%EA%B0%9C%EB%85%90-16-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-new-%EC%97%B0%EC%82%B0%EC%9E%90-sojvdjln1q

 

자바스크립트 개발자라면 알아야 할 33가지 개념 #16 자바스크립트 : 'new' 연산자

들어가기 전에 이 포스팅은 https://codeburst.io/javascript-for-beginners-the-new-operator-cee35beb669e 에 있는 포스팅들을 번역한 것입니다. 오역이나 의역이 있을 수 있습니다. 지적해주시면 확인 후 바로 정정

velog.io

 

728x90

댓글