✏️기록하는 즐거움
article thumbnail

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

|  제출

function solution(numbers) {
    let scope = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    return scope.filter((num) => numbers.indexOf(num) === -1).reduce((acc, val) => acc + val);
    
}

 

|  풀이과정

filter 메서드로 scope 배열에서 numbers 배열에 없는 숫자들을 필터링한다.

그리고 해당 수들을 reduce를 사용하여 더해주면 된다.

 

다른 사람 풀이

function solution(numbers) {
    return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}

0부터 9까지의 합은 45이다. 45에서 numbers 배열의 숫자들을 더한 값을 빼주면 numbers 배열에 속하지 않은 숫자들의 합을 구할 수 있다.

복잡하게 문제 그대로 메서드로 풀었던 나에게는 재밌는 풀이었다 ㅋㅋㅋ!!

 

|  개념

String.prototype.indexOf()

  • 문자열에서 지정된 요소가 발견되는 첫 번째 인덱스를 반환하고 해당 값이 없으면 -1을 반환한다.

Array.prototype.reduce()

 arr.reduce(callback[, initialValue])
  • 배열의 각 요소에 대해 주어진 reducer 함수를 실행한 결과값을 반환한다.
  • 매개변수는 다음과 같다.
    • 콜백함수
      • 누산기
      • 현재 처리할 값
      • 처리할 값의 인덱스, 초기값을 제공할 경우 0부터 그렇지 않을 경우 1부터 시작한다. (optional)
      • 처리할 값의 원본 배열 (optional)
    • 초기값 (optional)
      • 지정하지 않으면 배열의 첫 번째 요소를 초기값으로 사용한다.

 

profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!