문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.
입출력 예
numbers result
[1,2,3,4,6,7,8,0] 14
[5,8,4,0,6,7,9] 6
내가 푼 방법
function solution(numbers) {
const arr = [0,1,2,3,4,5,6,7,8,9]
let sum = 0
for (let i = 0; i< arr.length; i++){
if(arr.includes(numbers[i])){
sum += numbers[i]}
}
return 45-sum
}
numbers에 들어갈 수 있는 값은 0부터 9까지 값이므로 arr를 선언해준다음
그 arr에 numbers가 포함되어있는 값인지 .includes()를 통해 확인하고 그렇다면 합을 더한다. 이 후 0부터 9까지의 합인 45에서 해당값을 빼주면 해결
그런데 다시 보니 굳이 arr를 정의해주고 for문을 돌리지 않아도 해결가능한 문제였다. 처음에
if(!arr.includes(numbers[i]))
이런식으로 작성하려다 보니 코드가 저렇게 되었는데
그냥
function solution(numbers) {
return 45 - numbers.reduce((acc, cur) => acc+ cur, 0);
}
이렇게만 작성해도 문제는 해결된다.
처음에 생각했던 방향은
function solution(numbers) {
let answer = 0;
for(let i = 0; i <= 9; i++) {
if(!numbers.includes(i)) answer += i;
}
return answer;
}
이것으로 왜 그렇게 복잡하게 꼬아서 생각했는지 모르겠다..ㅜㅜ
출처:https://programmers.co.kr/learn/courses/30/lessons/86051/solution_groups?language=javascript