0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
numbers | result |
---|---|
[1,2,3,4,6,7,8,0] | 14 |
[5,8,4,0,6,7,9] | 6 |
입출력 예 #1
- 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2
- 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
0부터 9까지 사이의 무작위의 숫자가 배열로 들어오고 이 배열의 숫자를 검사해야한다.
또한 이 number의 배열의 길이는 항상 1이상 9이하로 제한되어 있다.
따라서 9만큼 for구문을 반복시켜주고 정수형이니 index를 활용하여 이 배열안에 숫자가 있는지 없는지 먼저 검사하고 없으면 없는 숫자들을 다른 배열로 담아 그 배열을 result로 전부 더하면 되겠다.
//먼저 들어올 숫자배열을 정의하고
let number = [1,2,3,4,6,7,8,0];
//추가적으로 받을 배열과 그 배열의 value의 합을 누적시킬 변수를 만든다.
let answer = [];
let result = 0;
//코드테스트는 함수형으로 만들어 입출력해야한다.
function solution(numbers){
//다음 for구문으로 0부터 9까지 반복시키면서 index와 동일한 value가 그 배열에 있는지 검사해야 겠다.
for(let i = 0; i <= 9; i ++){
//검사할때 그 값이 없으면 answer에다가 해당하는 index를 push하면 된다.
if(!(numbers.includes(i))){
answer.push(i)
}
}
//answer에 담긴 만큼 배열을 돌아 result 각 값들을 더해주자
for(let i = 0; i < answer.length; i++){
result += answer[i]
}
//result를 리턴시켜 출력하자
return result;
}
//함수 사용 부
solution(number)
위에서 number와 numbers를 구분한 이유는 매개변수로 받는 값을 구분하기위해 다르게 썼다.
다른 사람들의 풀이를 보면 굉장히 코드를 간소화하였는데 참고하도록 하자.
function solution(numbers) {
let cnt = 0;
for(let i=0; i<10; i++){
//i가 없으면 바로 cnt에 i를 누적합을 만들어 리턴하였다.
if(!(numbers.includes(i))) cnt+= i
}
return cnt;
}
배열을 거치지 않고 출력해도 같은 값이 나온다. 불필요한 것을 덜어낼 수 있는 것이 코딩이 것 같다. 무예를 하지 못하는 자의 동작이 더 큰 것처럼 나 또한 부족함이 많아 동작이 많은 코드를 작성하는 것 같다. 간단하고 명료하게! 사고하자.