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

Narcoker·2022년 8월 25일
0

코딩테스트

목록 보기
18/150

문제 설명

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

제한사항

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

입출력 예

풀이

모든 값이 false인 10개짜리 배열을 만들고 numbers에 있는 값에 해당하는 index의 값을 true 만든다.
reduce() 메소드를 이용.
만든 배열을 순회하면서 false면 해당 index를 더한 값을 return 한다.

function solution(numbers) {
    let arr = new Array(10).fill(false);
    numbers.forEach(value=>{
        if(arr[value] === false) arr[value] = true;
    })
    return arr.reduce((acc, isContain, index) => isContain ? acc : acc+index,0);
}

다른 사람의 풀이

numbers의 값이 중복되지 않고 numbers의 길이가 1~9, 값 범위가 1~9까지 이므로
나올 수 있는 값의 최대 값이 45 인 점을 이용하여 풀이했다.

function solution(numbers) {
    return 45 - numbers.reduce((acc, cur) => acc + cur, 0);
}
profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글