:ledger: 문제 설명

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

:one: 제한사항

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

:two: 입출력 예

numbers result
[1,2,3,4,6,7,8,0] 14
[5,8,4,0,6,7,9] 6

:three: 입출력 예 설명

:pushpin: 3-1) 입출력 예 #1

  • 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.

:pushpin: 3-2) 입출력 예 #2

  • 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.

:ledger: 문제 풀이

const solution = numbers => {
    let num = 0;
    for(let i = 0; i <= 9; i++) {
        if(!numbers.includes(i)) num += i;
    }
    return num;
}

console.log(solution([1,2,3,4,6,7,8,0]));

:one: 함수 선언

  • 화살표 함수를 사용하여 numbers를 매개변수로 받는다.

:two: 풀이

  • numbers로 전달받은 값 중 없는 숫자를 담아줄 변수 num을 선언함
  • for문을 사용하여 제한사항의 길이(9)만큼 순회함
  • includes를 사용하여 if문으로 없는 숫자를 num에 할당함

:three: 결과 반환

  • numbers = [1,2,3,4,6,7,8,0] 대입하면 5,9가 없으므로 14를 리턴함
  • numbers = [5,8,4,0,6,7,9] 대입하면 1,2,3가 없으므로 6를 리턴함

:four: 실행

  • solution([1,2,3,4,6,7,8,0]) 실행하면 5+9 = 14 출력
  • solution([5,8,4,0,6,7,9]) 실행하면 1+2+3 = 6 출력

:fire: 다른 사람의 풀이 참고

reduce 메서드를 사용하여 총합 45(0~9) - 매개변수로 전달받은 값을 모두 더해준 값을 해준 한 줄 풀이과정이 가장 눈에 돋보였다. 정말 코드는 어떻게 생각하느냐에 따라 쉽게,어렵게 풀 수 있는 것 같아 정말 매력적이다.. 나와 비슷하게 푼 풀이 과정은 그래도 460명이나 되어서 그래도 만족..!

// [356명] 총합 - reduce를 사용해 모두 더해준 값 풀이과정
function solution(numbers) {
    return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}

// [460명] for문을 사용한 풀이과정
function solution(numbers) {
    let answer = 0;

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

    return answer;
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges