프로그래머스 : 없는 숫자 더하기
배열에 없는 수를 찾아 더하는 문제입니다.
문제 설명
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의 합으로 빼서 자연스럽게 없는 수의 합을 구하는 역발상 풀이법입니다.
이렇게 푼 사람들은 상당히 머리가 좋은거 같네요.
하지만 수의 범위가 크게 늘어나면 사용하기 힘든 방식이기도 합니다.
댓글