[Programmers #86051] - 없는 숫자 더하기

G_NooN·2024년 1월 11일
0

Algorithms

목록 보기
18/33
post-thumbnail

(Lv. 1) 없는 숫자 더하기 (문제 링크)

문제 설명

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 주어졌을 때,
numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return하는 solution 함수를 완성하라.

제한 조건

  1. numbers는 길이가 1 이상 9 이하인 정수 배열이다.
  2. numbers의 모든 원소는 0 이상 9 이하인 정수다.
  3. numbers의 모든 원소는 서로 다르다.

입출력 예시


접근 방식

  1. 입력값 : 정수 배열 / 출력값 : 없는 원소들의 합계
  2. 0부터 9까지 모두 더한 값을 변수로 선언한다.
  3. 배열의 모든 요소는 0 ~ 9 이기 때문에, 없는 요소의 합계 = 0 ~ 9 합계 - 있는 요소의 합계
  4. 따라서, 배열을 순회하면서 배열의 모든 요소를 0 ~ 9 합계에서 뺀다.
  5. 결과를 출력한다.

코드

function solution(numbers) {
  let answer = 45; // 0+1+2+3+4+5+6+7+8+9

  for (let i = 0; i < numbers.length; i++) {
    answer -= numbers[i];
  }

  return answer;
}

더 개선할 수 있는 방법

includes() 사용

  • 배열을 순회하며 0부터 9까지의 숫자를 포함하는지 파악하여 없는 숫자가 나오면 합계에 더한다.
  • Point : includes에 !를 붙여 없는 숫자를 의미하도록 함
function solution1(numbers) {
  let answer = 0;

  for (let i = 0; i <= 9; i++) {
    if (!numbers.includes(i)) answer += i;
  }

  return answer;
}

reduce() 사용

  • 0부터 9까지 합산한 값인 45에서 시작하여, 배열의 요소를 거치며 계속해서 요소를 빼고 결과를 출력한다.
  • Point : reduce()를 사용하여 별도의 과정 없이 바로 값을 도출해낸다.
function solution2(numbers) {
  let answer = 0;

  answer = 45 - numbers.reduce((cur, acc) => cur + acc, 0);

  return answer;
}

주요 개념

  • includes()
  • !(NOT) 연산자
  • reduce() <- 공부가 필요함(개념은 알지만 써보지 못함..)
profile
쥐눈(Jin Hoon)

0개의 댓글