[코테] 없는 숫자 더하기

JulyK9·2022년 12월 28일
0

문제

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수 주어짐.
numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성.

제출코드

function solution(numbers) {
    // 반복문으로 돌면서 numbers에 없는 수를 체크하고 더해주기
    let result = 0
    for(let i = 0; i < 10; i++) {
        if(numbers.indexOf(i) === -1) {
            result += i
        }
    }
    return result
}

접근과정

  • 1 ~ 9까지 숫자중 없는 숫자를 체크해서 더해줘야함
  • 1 ~ 9까지 숫자 존재 여부 체크를 반복문을 통해 체크
  • 없는 숫자를 바로 변수에 더해주면서 결과 도출
  • find(), findindex(), indexOf() 의 차이를 알고 빠르게 적용

간단 정리

indexOf(), find(), findindex() 의 특징과 차이

  • 배열 내 검색을 위한 배열 메소드
  • es6에서 좀 더 다양한 배열 검색을 위해 find(), findIndex()가 추가됨
  • arr.indexOf()
    매개변수는 찾으려는 값(요소)
    반환값은 찾는 요소와 매칭되는 첫번째 요소의 인덱스, 없는 경우 -1
    인덱스까지 알고 싶을 때 사용
  • arr.find()
    매개변수는 콜백함수
    반환값은 콜백함수의 내용을 만족하는 첫번째 요소의 값, 없는 경우 undefined
  • arr.findIndex()
    매개변수는 콜백함수
    반환값은 콜백함수의 내용을 만족하는 첫번째 요소의 인덱스, 없는 경우 -1
  • arr.includes()
    매개변수는 찾으려는 값(요소)
    반환값은 Boolean
    단순히 존재 여부만 확인하고 싶을 때 사용

다른풀이1.

function solution(numbers) {
    return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
  • 와웅! 신박하다!
  • 1 ~ 9는 고정된 요소고 고정된 요소들의 합은 45
  • 문제 요구사항이, 없는 요소들의 합인 것을 이용(즉, 없는 요소를 특정할 필요는 없으므로)
  • reduce로 요소들의 합을 구하고 45에서 제외해줌

다른풀이2.

function solution(numbers) {
    let answer = 0;

    for(let i = 0; i <= 9; i++) {
        if(!numbers.includes(i)) answer += i;
    }

    return answer;
}
  • 로직은 같은데 사용한 메서드가 다르다.
  • 배열내 특정 요소 존재 여부를 확인할 때 includes() 도 사용 가능!

참고자료

profile
느리지만 꾸준하게. 부족하거나 잘못된 부분은 알려주시면 감사하겠습니다.

0개의 댓글