[코테] 없는 숫자 더하기

404·2022년 6월 12일
0

코테&알고리즘

목록 보기
3/4
post-thumbnail

https://github.com/FUNco247/Co_Test_Solution/blob/master/sumNotExistNum.js

0~9 사이의 숫자 배열이 주어지고 그 중 없는 숫자들의 합을 구하는 문제다.

function solution(numbers) {
  numbers = [...new Set(numbers)];
  let answer = 0;
  for (let i = 0; i < 10; i++) {
    const newNumbers = numbers.filter((e) => e !== i);
    if (newNumbers.length === numbers.length) {
      answer = answer + i;
    }
  }
  return answer;
}

0에서부터 9까지 반복되도록 반복문을 작성하고 i값을 제외한 newNumbers 배열을 만들어 원배열인 numbers와 길이를 비교했다.
그 길이가 같으면 i는 포함되어있지 않은 수 이므로 anwer에 더해준다.

배운점

  1. numbers = [...new Set(numbers)]; 배열안에 중복이 있는지 없는지 알 수 없어 중복을 제거하는 매소드를 사용했으나 다른 사람들의 답을 확인한 결과 input에 중복은 없는게 설정인것 같다. 주어진 상황을 잘 이해했으면 코드에서 불필요한 작업라인을 없애고 실행속도를 개선할 수 있었을 것이다.

느낀점

  1. 배열처리 문제의 경우 습관적으로 반복문 사용을 염두하게 되는데 가독성 면에서 무엇이 이로운지 모르겠으나... map() 같은 매소드를 더 공부해볼 필요가 있을것 같다.

타인의 멋진 풀이

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

reduce() 매소드를 활용해 0~9의 총 합인 45에서 input배열의 합을 빼버렸다..... 정말 무릎을 탁 치게 만드는 풀이다...

profile
T.T

0개의 댓글