본문 바로가기
알고리즘

없는 수 더하기

by 코딩달림 2022. 11. 4.
728x90

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

배열에 없는 수를 찾아 더하는 문제입니다.


문제 설명

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

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

입출력 예

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

1. 해설

소스보기
function solution(numbers) {
    var answer = 0;
    
        for(i=1; i<=9; i++){
            if(!numbers.includes(i)){
                answer += i;
            }
        }
    return answer;
}

랜덤으로 주어지는 배열 안에 없는 수를 찾아야 합니다. 특정 문자열이나 수를 찾는 메서드는 많지만 없는 수 만 찾는 메서드는 없으므로
반대로 반복문 안에 Index값을 넣어 특정 숫자의 포함 여부를 가리는 방식으로 풀었습니다.


2. 다른 풀이

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

numbers가 가질 수 있는 모든 수의 합을 numbers의 합으로 빼서 자연스럽게 없는 수의 합을 구하는 역발상 풀이법입니다.
이렇게 푼 사람들은 상당히 머리가 좋은거 같네요.
하지만 수의 범위가 크게 늘어나면 사용하기 힘든 방식이기도 합니다.

'알고리즘' 카테고리의 다른 글

내적  (3) 2022.11.05
음양 더하기  (2) 2022.11.05
자릿수 더하기  (1) 2022.11.03
짝수와 홀수  (2) 2022.11.02
몫 구하기  (1) 2022.11.02

댓글


광고 준비중입니다.