sumMultiples.js (6kyu 01)

Codewars 알고리즘 풀이


Problem

  • If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6, and 9.
    • 10 미만의 3 또는 5의 배수(multiples)인 모든 자연수(natural numbers)를 나열하면 3, 5, 6, 9를 얻는다.
  • The sum of these multiples is 23.
    • 이 배수들의 합은 23이다.
  • Finish the solution so that it returns the sum of all the multiples of 3 or 5 below the number passed in.
    • 전달된 숫자 미만의 3 또는 5의 모든 배수의 합을 반환한다.
  • If the number is a multiple of both 3 and 5, only count it once.
    • 숫자가 3과 5의 배수이면 한 번만 계산한다.



Solution 01

function sumMultiples(n) {
  let result = 0;
  
  for (let i = 0; i < n; i++) {
    if (i % 3 === 0 || i % 5 === 0) {
      result += i;
    }
  }
  return result;
}

sumMultiples(10);  // 23 (3 + 5 + 6 + 9)
sumMultiples(15);  // 45 (3 + 5 + 6 + 9 + 10 + 12)


Solution 02

function sumMultiples(n) {
  let result = 0;
  
  for (let i = 0; i < n; i++) {
    result += i % 3 ? (i % 5 ? 0 : i) : i;
  }
  return result;
}

sumMultiples(10);  // 23 (3 + 5 + 6 + 9)
sumMultiples(15);  // 45 (3 + 5 + 6 + 9 + 10 + 12)