[알고리즘] 없는 숫자 더하기

Cottonmycotton·2021년 9월 30일
0

Algorithm

목록 보기
17/44
post-custom-banner

문제 설명

0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ numbers의 길이 ≤ 9
  • 0 ≤ numbers의 모든 수 ≤ 9
  • numbers의 모든 수는 서로 다릅니다.

입출력 예시

🖊 풀이

  • 제한사항인 'numbers의 모든 수는 서로 다릅니다.' 즉, Numbers 배열에 중복된 요소가 없다는 것을 조건으로 건다
  • fliter 함수를 사용하여 array의 배열 요소 중 Numbers 배열에 없는 요소만 추출하여 새로운 배열로 반환한다.
  • 배열 anwer를 for문을 사용하여 각 요소들을 더해주어 return 값으로 반환해준다.

📌 Set

  • Set 객체는 중복되지 않는 유일한 값들의 집합이다
  • 중복을 허용하지 않는 Set의 특성을 활용하여 제한사항인 배열에 중복이 없음을 확인한다
  • Set 객체의 요소 개수를 확인하는 set.prototype.size 프로퍼티를 사용한다
    (출처: 모던 자바스크립트 Deep Dive)

📌 filter / includes

  • fliter와 includes 함수를 사용하여 배열 array와 numbers의 차집합을 구한다.
  • fliter는 반환값이 true인 요소로만 구성된 배열을 반환한다.

💡 코드

const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

function solution(numbers) {
  let count = 0;
  const hasDuplicates = new Set(numbers).size != numbers.length;
  
  if (!hasDuplicates) {
    const answer = array.filter(item => !numbers.includes(item));
    
    for (let i = 0; i < answer.length; i++) {
      count += answer[i];
    }
  }
  
  return count;
}

solution([1, 2, 3, 4, 6, 7, 8, 0]);
solution([5, 8, 4, 0, 6, 7, 9]);

문제 출처: 프로그래머스

profile
투명인간
post-custom-banner

0개의 댓글