ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #AIL_23.12.01 // Programmers_없는 숫자 더하기
    AIL( Algorithm I Learned) 2023. 12. 1. 10:38

    ## AIL_ 없는 숫자 더하기

    ***문제 설명
    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 해야 합니다.

    ## solution.JavaScript

    1. 문제의 접근 방식

    주어진 문제는 0부터 9까지의 숫자 중 일부가 빠진 배열이 주어질 때, 빠진 숫자들의 합을 구하는 것입니다. 


    2. 문제풀이

    function solution(numbers) {
        var answer = 0;
        for(let i= 0; i <= 9; i++)
            if(!numbers.includes(i)){
               answer += i;
               } 
        return answer;
    }
    /*
    테스트 1
    입력값 〉	[1, 2, 3, 4, 6, 7, 8, 0]
    기댓값 〉	14
    실행 결과 〉	테스트를 통과하였습니다.
    테스트 2
    입력값 〉	[5, 8, 4, 0, 6, 7, 9]
    기댓값 〉	6
    실행 결과 〉	테스트를 통과하였습니다.
    */

     

    1. `answer` 변수를 초기화하고, 0으로 설정합니다. 이 변수는 빠진 숫자들의 합을 누적할 변수입니다.

     

    2. 0부터 9까지의 숫자를 확인하는 for 반복문을 사용합니다.

     

    3. `numbers.includes(i)`를 통해 배열 `numbers`에 현재 숫자 i가 포함되어 있는지 확인합니다.

     

    4. 만약 해당 숫자 i가 배열 `numbers`에 없다면, 빠진 숫자이므로 `answer`에 현재 숫자 `i`를 더합니다.

     

    5. 반복문이 끝난 후, 최종적으로 계산된 `answer`를 반환합니다.

     


    3. 다른사람의 문제풀이 및 접근방식 분석

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

     

    위 코드는 주어진 배열 `numbers`에 빠진 숫자들의 합을 간단하게 계산하는 방법을 사용합니다. 여기서 아이디어는 0부터 9까지의 숫자의 합이 45 이용하여 빠진 숫자들의 합을 계산하고 반환합니다.

     

    1. `numbers.reduce((cur, acc) => cur + acc, 0): reduce` 함수를 사용하여 배열 `numbers`의 각 요소를 누적하고, 초기값으로 0을 설정합니다. 이를 통해 배열의 모든 숫자의 합을 계산합니다.

     

    2. `45 - ...` 0부터 9까지의 숫자의 합은 45이므로, 45에서 배열의 숫자 합을 뺍니다. 이렇게 하면 0부터 9까지의 숫자 중 빠진 숫자들의 합이 계산됩니다.


    #  includes() 메서드란?

    includes()는 JavaScript의 배열(Array) 메서드 중 하나로, 배열에 특정 요소가 포함되어 있는지 여부를 확인하는 역할을 합니다. 이 메서드는 불리언 값을 반환하며, 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.


    #  includes() 사용법

    array.includes(element[, fromIndex])

     

    ** rray: 확인할 배열

    ** element: 배열에 포함되어 있는지 확인할 요소

    ** fromIndex (선택적): 검색을 시작할 인덱스. 생략하면 배열의 처음부터 검색합니다.


    #  includes() 예시

    const numbers = [1, 2, 3, 4, 5];
    
    console.log(numbers.includes(3)); // true
    console.log(numbers.includes(6)); // false

    #  includes() 장단점

    **장점

    *간편성

    요소의 포함 여부를 간단하게 확인할 수 있습니다.

     

    *가독성

    코드를 간결하게 작성할 수 있어 가독성이 높아집니다.

    **단점

    * 참조형 데이터에서만 사용 가능

    includes()는 배열의 요소를 값으로 비교하므로, 참조형 데이터(객체, 배열 등)의 경우 참조값이 일치해야 합니다.


    #  includes() 주의사항

    * 정확한 일치

     includes()는 일치하는 값을 찾을 때 일치(===)를 사용하므로, 값과 타입이 모두 일치해야 합니다.

     

    * 참조형 데이터 주의

    참조형 데이터(객체, 배열 등)의 경우 참조값이 일치해야 정상적으로 동작합니다.

     

    * IE 지원

    Internet Explorer에서는 제한적으로 지원되므로 사용 시 주의가 필요합니다.


    includes()는 간단하고 직관적인 방법으로 배열에서 특정 요소의 존재 여부를 확인할 때 효과적으로 사용됩니다. 그러나 값의 일치 여부와 참조형 데이터의 처리에 주의해야 합니다.

Designed by Tistory.