[코드테스트]없는 숫자 더하기

이강민·2021년 10월 26일
0
post-thumbnail

없는 숫자 더하기

문제 출처 : 코드테스트

문제

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

입출력 예 설명

  • 입출력 예 #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;
}

배열을 거치지 않고 출력해도 같은 값이 나온다. 불필요한 것을 덜어낼 수 있는 것이 코딩이 것 같다. 무예를 하지 못하는 자의 동작이 더 큰 것처럼 나 또한 부족함이 많아 동작이 많은 코드를 작성하는 것 같다. 간단하고 명료하게! 사고하자.

profile
AllTimeDevelop

0개의 댓글

관련 채용 정보