티스토리 뷰

Data Structure & Algorithm

JS_Sum Primes

Alledy 2019. 4. 3. 01:16

SumPrimes

  • 문제: 주어지는 숫자보다 작거나 같은 소수들을 모두 더한 값을 리턴하라
  • 내가 푼 답

    function sumPrimes(num) {
      var result = 0;
      function isPrime(n) {
        for(var i = 2; i < n ; i++) {
          if(n % i === 0) {
            return false;
          }
        }
        return true;
      }
      for(var j = 2 ; j <= num ; j++) {
        if(isPrime(j)) {
          result += j;
        }
      }
      return result;
    }
    

     

  • Advanced Solution

    function sumPrimes(num) {
      let arr = Array.from({length: num+1}, (v,k) => k).slice(2);
      let onlyPrimes = arr.filter(n => {
        let m = n-1;
        while(m > 1 && m >= Math.sqrt(n)) {
          if(n % m === 0) {
            return false; 
            m--;
          }
          return true;
        }
      })
      return onlyPrimes.reduce((a,b) => a+b); 
    }
    

    이런 솔루션도 있다. (참고)

    Array.from은 반복 가능한 객체나 배열과 유사한 객체 등을 얕게 카피해주는 메소드라고 한다. 두 번째 패러미터로는 map함수를 갖는다. 그런데 위에 쓰인 Array.from은, 0부터 연속한 숫자로 배열을 만들어 주는 내용이었다. 솔직히 특히 함수 부분이 잘 이해는 안되지만… 그렇다고 한다.

 

'Data Structure & Algorithm' 카테고리의 다른 글

JS_Cash Register  (0) 2019.04.06
JS_flattenArray  (0) 2019.04.04
탐욕 알고리즘  (0) 2019.04.03
JS_Spinal Tap Case  (0) 2019.03.30
다익스트라 알고리즘  (0) 2019.03.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함