[알고리즘] 배열에서 포함하는 숫자 찾기 includes()

Bora.K | 권보라·2023년 12월 4일
0

알고리즘

목록 보기
10/11
post-thumbnail

1. 문제

[프로그래머스 Level.1] 없는 숫자 더하기

문제 설명

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

제한사항

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

2. 나의 문제 풀이

(1) 문제 분석

  1. numbers 배열에서 0부터 9까지의 숫자가 포함된 수를 찾는다.
  2. 포함하지 않은 수를 찾는다.
  3. 포함하지 않은 수를 모두 더하여 리턴한다.

(2) 해결 방법 생각하기

  • for문을 사용하여 포함하는 수 찾기
    includes() 문법으로 numbers에 포함된 숫자인지 아닌지를 찾을 수 있다.

  • !를 붙여 포함되지 않은 수 찾기
    includes는 true, false를 반환하는데, 앞에 !를 붙여 반대 상황을 찾을 수 있다.

    !true = false
    !false = true
    ``
    <br>
  • answer에 더하기
    answer의 초기값을 0으로 둔 후 위에서 찾은 값들을 더한다.


(3) 코드 구현


이번 문제는 for문을 사용하여 쉽게 풀 수 있었다.

3. 다른 사람의 문제 풀이


다른 사람의 문제 풀이를 보는 것은 재밌다. 정말 다양한 생각이 존재하고, 나는 왜 저런 생각을 못했을까 싶다. 포함하지 않은 수를 하나하나 찾기보다 0부터 9까지 더한 전체 합에서 numbers의 배열의 합을 빼서 푸는 것이다.

  • reduce() 메서드로 numbers 배열의 합 구하기
    reduce 메서드는 지난 번에 공부하여 사용법은 알고 있었는데, 배열의 합을 더할 생각은 못했다. 다만 0부터 9까지 주어지는 숫자가 더 커지면 이 숫자들을 더하는 식이 필요하겠지만, for문으로 하나하나 찾는 것보다는 효율이 더 있지 않을까 생각했다.

4. 오늘 배운 문법

arr.reduce((acc, cur) => acc + cur [, initialValue])

  • accumulator : 누적값
  • currentValue : 현재값
  • initialValue : 초기값
var total = [0, 1, 2, 3].reduce(
  (accumulator, currentValue) => accumulator + currentValue,
  0
);   // 반환값 6
profile
Frontend Engineers

0개의 댓글