코딩테스트

TIL - 프로그래머스 코딩테스트 : 없는 숫자 더하기

유기린 2022. 8. 7. 19:14

https://school.programmers.co.kr/learn/courses/30/lessons/86051

 

프로그래머스

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

programmers.co.kr

문제 설명

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

제한사항
  • 1 ≤ numbers의 길이 ≤ 9
    • 0 ≤ numbers의 모든 원소 ≤ 9
    • numbers의 모든 원소는 서로 다릅니다.

.sort()로 정렬하고 겹치지 않는 배열을 찾을라고 했었는데 

코드도 길어지고 비효율적이였다.

그래서 다시검색 

.includes    :    메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다.

 

function solution(numbers) {
    var answer = 0;
 	for (let i = 0; i < 10; i++) {
    	if (!numbers.includes(i))  answer += i
  	}
  return(answer);
}

 

if에서 { answer += i } 겉에 중괄호 생략 가능하다

 

includes를 사용하면 배열을 굳이 안해도되서 훨씬 줄이 짧아졌다.

 

 

다른 답

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

 

 

1부터 9까지의 합인 45에서 numbers 배열의 합을 빼서 결과를 return

배열의 총합을 구할때 reduce를 사용한다.

 

.reduce  : 메서드는 배열의 각 요소에 대해 주어진리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

  1. 누산기 (acc)
  2. 현재 값 (cur)