n
을 1
부터 n
까지로 나누어 떨어지는 수의 개수Array(right - left + 1).fill(left).map()
reduce()
function countDevisor(n) {
let count = 0;
for (let i = 1; i <= n; ++i) {
if (n % i === 0) ++count;
}
return count;
}
function solution(left, right) {
return Array(right - left + 1)
.fill(left)
.map((n, i) => n + i)
.reduce((result, n) => result + (countDevisor(n) % 2 ? -n : n), 0);
}
다른 사람 풀이 과정들을 보니 보통 이중 반복문을 돌려서 푸는 듯하다.
해보니 속도는 비슷한 것 같은데 내 경우에는 배열 객체를 만들어서 풀기 때문에 공간 복잡도가 좀더 높아지는 듯..?
배열 함수를 쓰는 데 익숙해져서 단순하게 풀 생각을 못했다.